gpt4 book ai didi

ios - 为什么我们必须同时符合 UIViewController 和 UITableViewDataSource?

转载 作者:行者123 更新时间:2023-11-28 16:10:42 24 4
gpt4 key购买 nike

目前,我只想为数据创建一个单独的类。但是,我不能像这样声明一个类:

class DataSource: UITableViewDataSource

这会给我带来很多错误。而且,我必须改为这样做:

class DataSource: UIViewController, UITableViewDataSource

那么,为什么?我是Java出身,所以我不明白为什么要实现A才能实现B。我尝试阅读Apple的官方文档,但找不到答案。

编辑:这里是错误:

Type 'DataSource' does not conform to protocol 'UITableViewDataSource'
Type 'DataSource' does not conform to protocol 'NSObjectProtocol'

并且,XCode 建议解决此问题的解决方案是在覆盖函数的开头添加“@objc”。修复后错误仍然存​​在。

编辑 2:我知道我需要实现 2 个函数才能使数据源正常工作。但是,如果不实现 UIViewController,它将无法工作。

enter image description here

添加UIViewController后就可以了!

enter image description here

最佳答案

协议(protocol) UITableViewDataSource 来自 NSObjectProtocol。所以你必须让你的类继承自 NSObject 以符合 NSObjectProtocol。 Vanilla Swift 类没有。但是 UIKit 的许多部分都需要 NSObjects。并且您必须实现该协议(protocol)所需的方法。试试下面的代码:

class DataSource: NSObject, UITableViewDataSource {

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
return UITableViewCell()
}
}

关于ios - 为什么我们必须同时符合 UIViewController 和 UITableViewDataSource?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39600135/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com