Skip to content

Commit b98f806

Browse files
committed
datasource
1 parent d01c11b commit b98f806

15 files changed

+365
-4
lines changed

SomoDemo/SomoDemo.xcodeproj/project.pbxproj

+26
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10+
9836566D1FD798CF008F57D4 /* SomoDataSourceProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 9836566C1FD798CF008F57D4 /* SomoDataSourceProvider.m */; };
11+
983656711FD79CA7008F57D4 /* DataSourceTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9836566F1FD79CA7008F57D4 /* DataSourceTableViewController.m */; };
12+
983656721FD79CA7008F57D4 /* DataSourceTableViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 983656701FD79CA7008F57D4 /* DataSourceTableViewController.xib */; };
13+
983656761FD7A519008F57D4 /* DataSourceTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 983656741FD7A519008F57D4 /* DataSourceTableViewCell.m */; };
14+
983656771FD7A519008F57D4 /* DataSourceTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 983656751FD7A519008F57D4 /* DataSourceTableViewCell.xib */; };
1015
98F5EADA1FC6A74C00D91FA1 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 98F5EAD91FC6A74C00D91FA1 /* AppDelegate.m */; };
1116
98F5EAE01FC6A74C00D91FA1 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 98F5EADE1FC6A74C00D91FA1 /* Main.storyboard */; };
1217
98F5EAE21FC6A74C00D91FA1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 98F5EAE11FC6A74C00D91FA1 /* Assets.xcassets */; };
@@ -25,6 +30,14 @@
2530
/* End PBXBuildFile section */
2631

2732
/* Begin PBXFileReference section */
33+
9836566B1FD798CF008F57D4 /* SomoDataSourceProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SomoDataSourceProvider.h; sourceTree = "<group>"; };
34+
9836566C1FD798CF008F57D4 /* SomoDataSourceProvider.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SomoDataSourceProvider.m; sourceTree = "<group>"; };
35+
9836566E1FD79CA7008F57D4 /* DataSourceTableViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DataSourceTableViewController.h; sourceTree = "<group>"; };
36+
9836566F1FD79CA7008F57D4 /* DataSourceTableViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DataSourceTableViewController.m; sourceTree = "<group>"; };
37+
983656701FD79CA7008F57D4 /* DataSourceTableViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = DataSourceTableViewController.xib; sourceTree = "<group>"; };
38+
983656731FD7A519008F57D4 /* DataSourceTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DataSourceTableViewCell.h; sourceTree = "<group>"; };
39+
983656741FD7A519008F57D4 /* DataSourceTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DataSourceTableViewCell.m; sourceTree = "<group>"; };
40+
983656751FD7A519008F57D4 /* DataSourceTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = DataSourceTableViewCell.xib; sourceTree = "<group>"; };
2841
98D3E36A1FC95EEA007F5A97 /* SomoDefines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SomoDefines.h; sourceTree = "<group>"; };
2942
98F5EAD51FC6A74C00D91FA1 /* SomoDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SomoDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
3043
98F5EAD81FC6A74C00D91FA1 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
@@ -97,9 +110,15 @@
97110
98F5EAFD1FC91E9D00D91FA1 /* TableViewSkeletonController.h */,
98111
98F5EAFE1FC91E9D00D91FA1 /* TableViewSkeletonController.m */,
99112
98F5EAFF1FC91E9D00D91FA1 /* TableViewSkeletonController.xib */,
113+
9836566E1FD79CA7008F57D4 /* DataSourceTableViewController.h */,
114+
9836566F1FD79CA7008F57D4 /* DataSourceTableViewController.m */,
115+
983656701FD79CA7008F57D4 /* DataSourceTableViewController.xib */,
100116
98F5EB021FC91EE600D91FA1 /* TableViewCell.h */,
101117
98F5EB031FC91EE600D91FA1 /* TableViewCell.m */,
102118
98F5EB041FC91EE600D91FA1 /* TableViewCell.xib */,
119+
983656731FD7A519008F57D4 /* DataSourceTableViewCell.h */,
120+
983656741FD7A519008F57D4 /* DataSourceTableViewCell.m */,
121+
983656751FD7A519008F57D4 /* DataSourceTableViewCell.xib */,
103122
98F5EAF71FC8148B00D91FA1 /* SView.h */,
104123
98F5EAF81FC8148B00D91FA1 /* SView.m */,
105124
98F5EADE1FC6A74C00D91FA1 /* Main.storyboard */,
@@ -122,6 +141,8 @@
122141
98F5EAF61FC7F9F600D91FA1 /* SomoSkeletonLayoutProtocol.h */,
123142
98F5EB081FC91F3C00D91FA1 /* Somo.h */,
124143
98D3E36A1FC95EEA007F5A97 /* SomoDefines.h */,
144+
9836566B1FD798CF008F57D4 /* SomoDataSourceProvider.h */,
145+
9836566C1FD798CF008F57D4 /* SomoDataSourceProvider.m */,
125146
);
126147
path = Somo;
127148
sourceTree = "<group>";
@@ -186,7 +207,9 @@
186207
files = (
187208
98F5EB011FC91E9D00D91FA1 /* TableViewSkeletonController.xib in Resources */,
188209
98F5EB061FC91EE600D91FA1 /* TableViewCell.xib in Resources */,
210+
983656771FD7A519008F57D4 /* DataSourceTableViewCell.xib in Resources */,
189211
98F5EAE51FC6A74C00D91FA1 /* LaunchScreen.storyboard in Resources */,
212+
983656721FD79CA7008F57D4 /* DataSourceTableViewController.xib in Resources */,
190213
98F5EAE21FC6A74C00D91FA1 /* Assets.xcassets in Resources */,
191214
98F5EAE01FC6A74C00D91FA1 /* Main.storyboard in Resources */,
192215
98F5EB0D1FC9213D00D91FA1 /* CommonViewController.xib in Resources */,
@@ -205,9 +228,12 @@
205228
98F5EB001FC91E9D00D91FA1 /* TableViewSkeletonController.m in Sources */,
206229
98F5EAE81FC6A74C00D91FA1 /* main.m in Sources */,
207230
98F5EAF11FC6B69D00D91FA1 /* UIView+SomoSkeleton.m in Sources */,
231+
9836566D1FD798CF008F57D4 /* SomoDataSourceProvider.m in Sources */,
232+
983656761FD7A519008F57D4 /* DataSourceTableViewCell.m in Sources */,
208233
98F5EB051FC91EE600D91FA1 /* TableViewCell.m in Sources */,
209234
98F5EADA1FC6A74C00D91FA1 /* AppDelegate.m in Sources */,
210235
98F5EAF51FC7F92D00D91FA1 /* SomoView.m in Sources */,
236+
983656711FD79CA7008F57D4 /* DataSourceTableViewController.m in Sources */,
211237
98F5EB0C1FC9213D00D91FA1 /* CommonViewController.m in Sources */,
212238
);
213239
runOnlyForDeploymentPostprocessing = 0;

SomoDemo/SomoDemo.xcodeproj/xcuserdata/xorshine.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

+12
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,16 @@
22
<Bucket
33
type = "1"
44
version = "2.0">
5+
<Breakpoints>
6+
<BreakpointProxy
7+
BreakpointExtensionID = "Xcode.Breakpoint.ExceptionBreakpoint">
8+
<BreakpointContent
9+
shouldBeEnabled = "Yes"
10+
ignoreCount = "0"
11+
continueAfterRunningActions = "No"
12+
scope = "0"
13+
stopOnStyle = "0">
14+
</BreakpointContent>
15+
</BreakpointProxy>
16+
</Breakpoints>
517
</Bucket>

SomoDemo/SomoDemo/Base.lproj/Main.storyboard

+24
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,30 @@
8787
</subviews>
8888
</tableViewCellContentView>
8989
</tableViewCell>
90+
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" textLabel="jdF-Yq-02m" detailTextLabel="vdB-bM-kmZ" style="IBUITableViewCellStyleSubtitle" id="G82-ep-Noq">
91+
<rect key="frame" x="0.0" y="120" width="375" height="60"/>
92+
<autoresizingMask key="autoresizingMask"/>
93+
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="G82-ep-Noq" id="JCu-Fh-1Ae">
94+
<rect key="frame" x="0.0" y="0.0" width="341" height="59.5"/>
95+
<autoresizingMask key="autoresizingMask"/>
96+
<subviews>
97+
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" insetsLayoutMarginsFromSafeArea="NO" text="UITableViewDataSourceProvider" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="jdF-Yq-02m">
98+
<rect key="frame" x="16" y="10" width="247" height="20.5"/>
99+
<autoresizingMask key="autoresizingMask"/>
100+
<fontDescription key="fontDescription" type="system" pointSize="17"/>
101+
<nil key="textColor"/>
102+
<nil key="highlightedColor"/>
103+
</label>
104+
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" insetsLayoutMarginsFromSafeArea="NO" text="Subtitle" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="vdB-bM-kmZ">
105+
<rect key="frame" x="16" y="33.5" width="44" height="14.5"/>
106+
<autoresizingMask key="autoresizingMask"/>
107+
<fontDescription key="fontDescription" type="system" pointSize="12"/>
108+
<nil key="textColor"/>
109+
<nil key="highlightedColor"/>
110+
</label>
111+
</subviews>
112+
</tableViewCellContentView>
113+
</tableViewCell>
90114
</cells>
91115
</tableViewSection>
92116
</sections>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
//
2+
// DataSourceTableViewCell.h
3+
// SomoDemo
4+
//
5+
// Created by 向小辉 on 2017/12/6.
6+
// Copyright © 2017年 KINX. All rights reserved.
7+
//
8+
9+
#import <UIKit/UIKit.h>
10+
#import "Somo.h"
11+
12+
@interface DataSourceTableViewCell : UITableViewCell<SomoSkeletonLayoutProtocol>
13+
14+
@end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
//
2+
// DataSourceTableViewCell.m
3+
// SomoDemo
4+
//
5+
// Created by 向小辉 on 2017/12/6.
6+
// Copyright © 2017年 KINX. All rights reserved.
7+
//
8+
9+
#import "DataSourceTableViewCell.h"
10+
#import "Somo.h"
11+
12+
@implementation DataSourceTableViewCell
13+
14+
- (void)awakeFromNib {
15+
[super awakeFromNib];
16+
// Initialization code
17+
}
18+
19+
20+
- (NSArray<SomoView *> *)somoSkeletonLayout{
21+
SomoView * s0 = [[SomoView alloc] initWithFrame:CGRectMake(10, 20, 70, 70)];
22+
s0.layer.cornerRadius = 35.;
23+
24+
SomoView * s1 = [[SomoView alloc] initWithFrame:CGRectMake(100, 30, 200, 15)];
25+
SomoView * s2 = [[SomoView alloc] initWithFrame:CGRectMake(100, 70, 100, 15)];
26+
27+
return @[s0,s1,s2];
28+
}
29+
30+
@end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13529" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
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="13527"/>
9+
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
10+
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
11+
</dependencies>
12+
<objects>
13+
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
14+
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
15+
<tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="100" id="KGk-i7-Jjw" customClass="DataSourceTableViewCell">
16+
<rect key="frame" x="0.0" y="0.0" width="320" height="100"/>
17+
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
18+
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
19+
<rect key="frame" x="0.0" y="0.0" width="320" height="99.5"/>
20+
<autoresizingMask key="autoresizingMask"/>
21+
<subviews>
22+
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Logo" translatesAutoresizingMaskIntoConstraints="NO" id="eVB-d8-9g5">
23+
<rect key="frame" x="16" y="19" width="60" height="60"/>
24+
<constraints>
25+
<constraint firstAttribute="width" constant="60" id="O7l-A1-9Nx"/>
26+
<constraint firstAttribute="height" constant="60" id="jN0-dk-WTb"/>
27+
</constraints>
28+
</imageView>
29+
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" editable="NO" textAlignment="natural" selectable="NO" translatesAutoresizingMaskIntoConstraints="NO" id="VnA-Ad-9eH">
30+
<rect key="frame" x="91" y="19" width="213" height="60"/>
31+
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
32+
<string key="text">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim </string>
33+
<fontDescription key="fontDescription" type="system" pointSize="14"/>
34+
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
35+
</textView>
36+
</subviews>
37+
<constraints>
38+
<constraint firstItem="VnA-Ad-9eH" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="19" id="Hwl-Ye-aaq"/>
39+
<constraint firstItem="eVB-d8-9g5" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="16" id="O6S-1c-hIh"/>
40+
<constraint firstItem="eVB-d8-9g5" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="T8I-Qw-tkF"/>
41+
<constraint firstAttribute="bottom" secondItem="VnA-Ad-9eH" secondAttribute="bottom" constant="20.5" id="fsd-A9-pnk"/>
42+
<constraint firstAttribute="trailing" secondItem="VnA-Ad-9eH" secondAttribute="trailing" constant="16" id="w4S-zL-bkT"/>
43+
<constraint firstItem="VnA-Ad-9eH" firstAttribute="leading" secondItem="eVB-d8-9g5" secondAttribute="trailing" constant="15" id="zN2-n7-b3g"/>
44+
</constraints>
45+
</tableViewCellContentView>
46+
<viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
47+
<point key="canvasLocation" x="34" y="92"/>
48+
</tableViewCell>
49+
</objects>
50+
<resources>
51+
<image name="Logo" width="164" height="166"/>
52+
</resources>
53+
</document>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
//
2+
// DataSourceTableViewController.h
3+
// SomoDemo
4+
//
5+
// Created by 向小辉 on 2017/12/6.
6+
// Copyright © 2017年 KINX. All rights reserved.
7+
//
8+
9+
#import <UIKit/UIKit.h>
10+
11+
@interface DataSourceTableViewController : UITableViewController
12+
13+
@end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
////
2+
// TableViewSkeletonController.m
3+
// SomoDemo
4+
//
5+
// Created by 向小辉 on 2017/11/25.
6+
// Copyright © 2017年 KINX. All rights reserved.
7+
//
8+
9+
#import "DataSourceTableViewController.h"
10+
#import "DataSourceTableViewCell.h"
11+
#import "Somo.h"
12+
13+
@interface DataSourceTableViewController ()
14+
15+
@property (strong, nonatomic) NSMutableArray<NSNumber *> * dataSource;
16+
17+
@property (strong, nonatomic) SomoDataSourceProvider * provider;
18+
19+
@end
20+
21+
@implementation DataSourceTableViewController
22+
23+
- (void)viewDidLoad {
24+
[super viewDidLoad];
25+
26+
self.tableView.rowHeight = 100;
27+
[self.tableView registerNib:[UINib nibWithNibName:@"DataSourceTableViewCell" bundle:nil] forCellReuseIdentifier:@"id"];
28+
29+
self.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Logo"]];
30+
self.navigationItem.titleView.contentMode = UIViewContentModeScaleAspectFit;
31+
32+
#pragma mark - provider
33+
// 将tableview的datasource指向SomoDataSourceProvider
34+
// 当数据加载完成后,将tableview的datasource指向self
35+
self.provider = [SomoDataSourceProvider dataSourceProviderWithCellReuseIdentifier:@"id"];
36+
self.tableView.dataSource = self.provider;
37+
self.tableView.delegate = self.provider;
38+
}
39+
40+
- (void)viewDidAppear:(BOOL)animated{
41+
[super viewDidAppear:animated];
42+
43+
//随便写一个代表网络请求3秒
44+
45+
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
46+
47+
__weak typeof(self) weakSelf = self;
48+
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3. * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
49+
__strong typeof(weakSelf) strongSelf = weakSelf;
50+
[strongSelf load];
51+
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
52+
});
53+
}
54+
55+
- (void)load{
56+
57+
for (NSInteger i = 0; i < 20; i++) {
58+
self.dataSource[i] = @(1);
59+
}
60+
#pragma mark -
61+
//==================================================
62+
self.tableView.dataSource = self;
63+
self.tableView.delegate = self;
64+
//==================================================
65+
[self.tableView reloadData];
66+
}
67+
68+
#pragma mark - Table view data source
69+
70+
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
71+
return self.dataSource.count;
72+
}
73+
74+
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
75+
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"id" forIndexPath:indexPath];
76+
return cell;
77+
}
78+
79+
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
80+
[tableView deselectRowAtIndexPath:indexPath animated:YES];
81+
}
82+
83+
#pragma mark - 在这里必调用 endSomo
84+
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
85+
[cell endSomo];
86+
}
87+
88+
- (NSMutableArray<NSNumber *> *)dataSource{
89+
if (!_dataSource) {
90+
_dataSource = [NSMutableArray array];
91+
}
92+
return _dataSource;
93+
}
94+
95+
@end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2+
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13142" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
3+
<dependencies>
4+
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12042"/>
5+
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
6+
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
7+
</dependencies>
8+
<objects>
9+
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="DataSourceTableViewController">
10+
<connections>
11+
<outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
12+
</connections>
13+
</placeholder>
14+
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
15+
<tableView opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" bouncesZoom="NO" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="i5M-Pr-FkT">
16+
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
17+
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
18+
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
19+
<viewLayoutGuide key="safeArea" id="NQg-xp-Ubj"/>
20+
<connections>
21+
<outlet property="dataSource" destination="-1" id="Tng-2m-Rnh"/>
22+
<outlet property="delegate" destination="-1" id="9aC-8N-iBw"/>
23+
</connections>
24+
</tableView>
25+
</objects>
26+
</document>

0 commit comments

Comments
 (0)