ios – self.tableView.delegate = self Swift

如果我有一个UIViewController,我在故事板中连接一个tableView,连接tableview插座,然后通过连接检查器连接数据源和委托方法(cntrl拖动到vc橙色圆圈图标),我还需要添加自我.tableView.delegate = self和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 { ... }

}

解决方法

do I still need to add self.tableView.delegate = self to the actual view controller?

不.您是通过在故事板中建立连接来实现此目的的.它们完全相同:对委托属性的赋值,以两种不同的方式表示(一种在代码中,一种在“接口生成器”中以“图形方式”).你只需要做其中一个.

但是如果您的视图控制器是一个表视图控制器(UITableViewController子类),那么您也不会这样做,因为表视图控制器已经是表视图的数据源和委托.对于集合视图控制器(UICollectionViewController子类)也是如此;它已经是集合视图的数据源和委托.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...