如果我想让相同的基本UITableView出现在两个不同的场景中,那么对两个表使用一个数据源和委托位置是否是一个好主意?
我想试试这个,但是当我在IB中选择表视图,并试图将行拖到UITableView文件的一个自定义类,甚至拖到另一个自定义视图控制器时,它都不会连接,似乎只能将当前的视图控制器做成表的数据源并委托(?)。
我想知道这是否至少与this question相似,但即使是,在swift中是如何做到的(也许有一种新的方法可以做到这一点)。
如果我想让相同的基本UITableView出现在两个不同的场景中,那么对两个表使用一个数据源和委托位置是否是一个好主意?
我想试试这个,但是当我在IB中选择表视图,并试图将行拖到UITableView文件的一个自定义类,甚至拖到另一个自定义视图控制器时,它都不会连接,似乎只能将当前的视图控制器做成表的数据源并委托(?)。
我想知道这是否至少与this question相似,但即使是,在swift中是如何做到的(也许有一种新的方法可以做到这一点)。
4条答案
按热度按时间k2arahey1#
Swift 4.1.你可以创建一个单独的类,并从UITableViewDataSource和UITableViewDelegate类继承它。这里,我在DataSource类中实现UITableViewDataSource()方法。你还需要确认NSObject,这样我们就不必摆弄**@objc和@class关键字,因为UITableViewDataSource是一个Objective-C协议**。
现在,我们将DataSource设置为UITableView。如果我们创建单独的类,那么我们必须将数据传递给DataSource类。
类似地,你可以在单独的类中实现UITableViewDelegate。另一种分离DataSource和Delegate的方法是创建viewController的扩展。甚至你可以创建单独的类,在那里你只能为你的视图控制器定义扩展。在你定义扩展时,你不需要传递数据。
brqmpdu12#
下面的代码示例显示UITableView的不同Datasource和委托。
Swift代码
rlcwz9us3#
您可以实现自定义类对象,并实现该类的
UITableViewDataSource
方法。然后,
UITableView
具有属性delegate
和dataSource
。为这些属性分配正确的对象。mpgws1up4#
每个表视图都应该有自己的表视图控制器。这与模型视图控制器设计模式一致。
如果两个表中的数据相同,则可以使用一个公共类作为dataSource。