Skip to content

Commit 869798c

Browse files
committed
Table Search with UISearchController: Version 1.6, 2018-01-16
Converted to Swift 4, upgraded to iOS 11 SDK. “Table Search with UISearchController” is an iOS sample application that demonstrates how to use UISearchController. A search controller manages the presentation of a search bar, in concert with the results view controller’s content. Signed-off-by: Liu Lantao <[email protected]>
1 parent 1ecd172 commit 869798c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+1307
-960
lines changed

TableSearch/.gitignore

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
.DS_Store
2+
3+
# Xcode
4+
build/*
5+
*/build/*
6+
*/**/build/*
7+
*.mode1
8+
*.pbxuser
9+
*.perspective
10+
!default.perspectivev3
11+
!default.pbxuser
12+
*.mode1v3
13+
!default.mode1v3
14+
*.mode2v3
15+
!default.mode2v3
16+
*.perspectivev3
17+
!default.perspectivev3
18+
*.xcworkspace
19+
!default.xcworkspace
20+
xcuserdata
21+
profile
22+
*.moved-aside
23+
24+
# Generated files
25+
VersionX-revision.h
26+
27+
# build products
28+
build/
29+
*.[oa]
30+
31+
# version control files
32+
.hg
33+
.svn
34+
CVS
35+
36+
# automatic backup files
37+
*~.nib
38+
*.swp
39+
*~
40+
*(Autosaved).rtfd/
41+
Backup[ ]of[ ]*.pages/
42+
Backup[ ]of[ ]*.key/
43+
Backup[ ]of[ ]*.numbers/

TableSearch/LICENSE.txt

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
Sample code project: Table Search with UISearchController (Obj-C and Swift)
2-
Version: 1.1
1+
Sample code project: Table Search with UISearchController
2+
Version: 1.6
33

44
IMPORTANT: This Apple software is supplied to you by Apple
55
Inc. ("Apple") in consideration of your agreement to the following
@@ -39,4 +39,4 @@ AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
3939
STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
4040
POSSIBILITY OF SUCH DAMAGE.
4141

42-
Copyright (C) 2014 Apple Inc. All Rights Reserved.
42+
Copyright (C) 2017 Apple Inc. All Rights Reserved.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13196" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="Mpu-gp-ECv">
3+
<device id="retina4_7" orientation="portrait">
4+
<adaptation id="fullscreen"/>
5+
</device>
6+
<dependencies>
7+
<deployment identifier="iOS"/>
8+
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13173"/>
9+
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
10+
</dependencies>
11+
<scenes>
12+
<!--Table Search-->
13+
<scene sceneID="iB1-fs-lSk">
14+
<objects>
15+
<tableViewController id="VNu-yS-PhO" sceneMemberID="viewController">
16+
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" id="ZEs-tw-jfE">
17+
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
18+
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
19+
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
20+
<connections>
21+
<outlet property="dataSource" destination="VNu-yS-PhO" id="jbO-QO-MRr"/>
22+
<outlet property="delegate" destination="VNu-yS-PhO" id="Dxl-iD-rVg"/>
23+
</connections>
24+
</tableView>
25+
<navigationItem key="navigationItem" title="Table Search" id="bC7-FH-Jej"/>
26+
</tableViewController>
27+
<placeholder placeholderIdentifier="IBFirstResponder" id="RXb-8k-lSN" userLabel="First Responder" sceneMemberID="firstResponder"/>
28+
</objects>
29+
<point key="canvasLocation" x="220" y="185"/>
30+
</scene>
31+
<!--Navigation Controller-->
32+
<scene sceneID="jn5-or-hCA">
33+
<objects>
34+
<navigationController id="Mpu-gp-ECv" sceneMemberID="viewController">
35+
<navigationBar key="navigationBar" contentMode="scaleToFill" largeTitles="YES" id="2Sw-zp-sGN">
36+
<rect key="frame" x="0.0" y="20" width="375" height="96"/>
37+
<autoresizingMask key="autoresizingMask"/>
38+
</navigationBar>
39+
<connections>
40+
<segue destination="VNu-yS-PhO" kind="relationship" relationship="rootViewController" id="dqI-iU-Jca"/>
41+
</connections>
42+
</navigationController>
43+
<placeholder placeholderIdentifier="IBFirstResponder" id="6AH-lD-SC7" userLabel="First Responder" sceneMemberID="firstResponder"/>
44+
</objects>
45+
<point key="canvasLocation" x="-551" y="185"/>
46+
</scene>
47+
</scenes>
48+
</document>
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,68 @@
1-
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2-
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6185.7" systemVersion="13E28" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="w26-b6-vmW">
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13196" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="w26-b6-vmW">
3+
<device id="retina4_7" orientation="portrait">
4+
<adaptation id="fullscreen"/>
5+
</device>
36
<dependencies>
4-
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6181.2"/>
7+
<deployment identifier="iOS"/>
8+
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13174"/>
9+
<capability name="Alignment constraints to the first baseline" minToolsVersion="6.0"/>
10+
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
11+
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
512
</dependencies>
613
<scenes>
714
<!--DetailViewController-->
815
<scene sceneID="tXH-gV-NTc">
916
<objects>
1017
<viewController storyboardIdentifier="APLDetailViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="gen-ib-Cgz" userLabel="DetailViewController" customClass="APLDetailViewController" sceneMemberID="viewController">
11-
<layoutGuides>
12-
<viewControllerLayoutGuide type="top" id="iCO-3Z-PM5"/>
13-
<viewControllerLayoutGuide type="bottom" id="DNV-d2-1yn"/>
14-
</layoutGuides>
1518
<view key="view" contentMode="scaleToFill" id="8hD-Hr-uqh">
16-
<rect key="frame" x="0.0" y="0.0" width="320" height="480"/>
19+
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
1720
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
1821
<subviews>
19-
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" verticalHuggingPriority="251" fixedFrame="YES" text="Year:" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vzg-gO-TTV">
20-
<rect key="frame" x="20" y="20" width="44" height="21"/>
22+
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" verticalHuggingPriority="251" text="Year:" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vzg-gO-TTV">
23+
<rect key="frame" x="20" y="27" width="44" height="21"/>
2124
<fontDescription key="fontDescription" type="system" pointSize="17"/>
2225
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
2326
<nil key="highlightedColor"/>
2427
</label>
25-
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Price:" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wZC-US-OVI">
26-
<rect key="frame" x="20" y="49" width="44" height="21"/>
28+
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Price:" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wZC-US-OVI">
29+
<rect key="frame" x="20" y="56" width="44" height="21"/>
2730
<fontDescription key="fontDescription" type="system" pointSize="17"/>
2831
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
2932
<nil key="highlightedColor"/>
3033
</label>
31-
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Xkg-zs-NLf">
32-
<rect key="frame" x="72" y="20" width="228" height="21"/>
34+
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Xkg-zs-NLf">
35+
<rect key="frame" x="72" y="27" width="228" height="21"/>
36+
<constraints>
37+
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="228" id="ZIo-NC-QDe"/>
38+
</constraints>
3339
<fontDescription key="fontDescription" type="system" pointSize="17"/>
3440
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
3541
<nil key="highlightedColor"/>
3642
</label>
37-
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" verticalHuggingPriority="251" fixedFrame="YES" text="" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="h3u-Es-UDb">
38-
<rect key="frame" x="72" y="49" width="228" height="21"/>
43+
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" verticalHuggingPriority="251" text="" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="h3u-Es-UDb">
44+
<rect key="frame" x="72" y="56" width="228" height="21"/>
3945
<fontDescription key="fontDescription" type="system" pointSize="17"/>
4046
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
4147
<nil key="highlightedColor"/>
4248
</label>
4349
</subviews>
44-
<color key="backgroundColor" red="0.82047193880000002" green="0.82047193880000002" blue="0.82047193880000002" alpha="1" colorSpace="calibratedRGB"/>
50+
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
51+
<constraints>
52+
<constraint firstItem="Xkg-zs-NLf" firstAttribute="top" secondItem="6WW-fO-tiu" secondAttribute="top" constant="7" id="0Q4-mn-XOM"/>
53+
<constraint firstItem="h3u-Es-UDb" firstAttribute="baseline" secondItem="wZC-US-OVI" secondAttribute="baseline" id="8NP-Lf-ejB"/>
54+
<constraint firstItem="h3u-Es-UDb" firstAttribute="firstBaseline" secondItem="wZC-US-OVI" secondAttribute="baseline" id="9u1-gB-igD"/>
55+
<constraint firstItem="Xkg-zs-NLf" firstAttribute="leading" secondItem="h3u-Es-UDb" secondAttribute="leading" id="K4q-79-IcX"/>
56+
<constraint firstItem="h3u-Es-UDb" firstAttribute="leading" secondItem="wZC-US-OVI" secondAttribute="trailing" constant="8" symbolic="YES" id="Mcd-ny-HQC"/>
57+
<constraint firstItem="Xkg-zs-NLf" firstAttribute="leading" secondItem="vzg-gO-TTV" secondAttribute="trailing" constant="8" symbolic="YES" id="Yjj-P0-mk6"/>
58+
<constraint firstItem="wZC-US-OVI" firstAttribute="leading" secondItem="6WW-fO-tiu" secondAttribute="leading" constant="20" id="b9l-Fi-qyM"/>
59+
<constraint firstItem="vzg-gO-TTV" firstAttribute="leading" secondItem="wZC-US-OVI" secondAttribute="leading" id="cCp-Hu-22H"/>
60+
<constraint firstItem="vzg-gO-TTV" firstAttribute="baseline" secondItem="Xkg-zs-NLf" secondAttribute="baseline" id="dcu-xg-Rwu"/>
61+
<constraint firstItem="wZC-US-OVI" firstAttribute="top" secondItem="vzg-gO-TTV" secondAttribute="bottom" constant="8" symbolic="YES" id="nUZ-ov-oQC"/>
62+
<constraint firstItem="Xkg-zs-NLf" firstAttribute="trailing" secondItem="h3u-Es-UDb" secondAttribute="trailing" id="x3X-bY-Ku4"/>
63+
<constraint firstItem="vzg-gO-TTV" firstAttribute="baseline" secondItem="Xkg-zs-NLf" secondAttribute="firstBaseline" id="z1r-za-6fq"/>
64+
</constraints>
65+
<viewLayoutGuide key="safeArea" id="6WW-fO-tiu"/>
4566
</view>
4667
<extendedEdge key="edgesForExtendedLayout"/>
4768
<navigationItem key="navigationItem" id="ziV-cJ-fwE"/>
@@ -53,13 +74,14 @@
5374
</viewController>
5475
<placeholder placeholderIdentifier="IBFirstResponder" id="nHX-c9-6sg" userLabel="First Responder" sceneMemberID="firstResponder"/>
5576
</objects>
56-
<point key="canvasLocation" x="566" y="29"/>
77+
<point key="canvasLocation" x="593" y="29"/>
5778
</scene>
5879
<!--Navigation Controller-->
5980
<scene sceneID="QNE-Ex-Wuc">
6081
<objects>
6182
<navigationController storyboardIdentifier="RootNavController" definesPresentationContext="YES" useStoryboardIdentifierAsRestorationIdentifier="YES" id="w26-b6-vmW" sceneMemberID="viewController">
62-
<navigationBar key="navigationBar" contentMode="scaleToFill" id="vII-87-i5a">
83+
<navigationBar key="navigationBar" contentMode="scaleToFill" translucent="NO" id="vII-87-i5a">
84+
<rect key="frame" x="0.0" y="20" width="375" height="44"/>
6385
<autoresizingMask key="autoresizingMask"/>
6486
</navigationBar>
6587
<connections>
@@ -68,34 +90,26 @@
6890
</navigationController>
6991
<placeholder placeholderIdentifier="IBFirstResponder" id="tjP-fV-2lm" userLabel="First Responder" sceneMemberID="firstResponder"/>
7092
</objects>
71-
<point key="canvasLocation" x="-240" y="24"/>
93+
<point key="canvasLocation" x="-311" y="29"/>
7294
</scene>
7395
<!--MainTableViewController-->
7496
<scene sceneID="sAe-F7-AfH">
7597
<objects>
7698
<tableViewController storyboardIdentifier="APLMainTableViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="4Ax-ex-6Gm" userLabel="MainTableViewController" customClass="APLMainTableViewController" sceneMemberID="viewController">
77-
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" ambiguous="YES" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="y0T-Np-Hyb">
78-
<rect key="frame" x="0.0" y="0.0" width="320" height="480"/>
99+
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="y0T-Np-Hyb">
100+
<rect key="frame" x="0.0" y="0.0" width="375" height="603"/>
79101
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
80-
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
102+
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
81103
<connections>
82104
<outlet property="dataSource" destination="4Ax-ex-6Gm" id="PwO-9k-nGi"/>
83105
<outlet property="delegate" destination="4Ax-ex-6Gm" id="BUx-uy-HqP"/>
84106
</connections>
85107
</tableView>
86-
<navigationItem key="navigationItem" title="Search" id="LG0-9u-bD4"/>
108+
<navigationItem key="navigationItem" title="Table Search" id="LG0-9u-bD4"/>
87109
</tableViewController>
88110
<placeholder placeholderIdentifier="IBFirstResponder" id="ZiR-hR-ddR" userLabel="First Responder" sceneMemberID="firstResponder"/>
89111
</objects>
90112
<point key="canvasLocation" x="150" y="29"/>
91113
</scene>
92114
</scenes>
93-
<simulatedMetricsContainer key="defaultSimulatedMetrics">
94-
<simulatedStatusBarMetrics key="statusBar"/>
95-
<simulatedOrientationMetrics key="orientation"/>
96-
<simulatedScreenMetrics key="destination">
97-
<size key="portraitSize" width="320" height="480"/>
98-
<size key="landscapeSize" width="480" height="320"/>
99-
</simulatedScreenMetrics>
100-
</simulatedMetricsContainer>
101115
</document>

0 commit comments

Comments
 (0)