如果我有一个 UIViewController 并且我在故事板中将 tableView 连接到它,连接 tableview 出口,然后通过连接检查器连接数据源和委托方法(cntrl+拖动到 vc 橙色圆圈图标),我还需要添加self.tableView.delegate = self
and self.tableView.datasource = self
到实际的视图控制器?当然,在实际的 vc 中,我正在实现 tableView 数据/委托协议。
另外,我假设无论答案是否相同,集合视图控制器都会以相同的方式通过故事板连接?
添加它有什么优点和缺点?
class FooController:UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.delegate = self
self.tableView.datasource = self
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { ... }
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { ... }
}
我还需要将 self.tableView.delegate = self 添加到实际的视图控制器吗?
不。您可以通过在故事板中建立连接来完成此操作。他们是exactly同样的事情:分配给delegate
属性,以两种不同的方式表示(一种在代码中,一种在 Interface Builder 中“以图形方式”)。您只需执行其中一项即可。
但是如果你的视图控制器是一个表视图控制器(UITableViewController子类),那么你会做neither,因为表视图控制器是already表视图的数据源和委托。集合视图也是如此控制器(UICollectionViewController 子类);这是already集合视图的数据源和委托。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)