Swift 3 UITableView数据源方法viewForHeaderInSection发出警告
迁移到Swift 3后,我有以下方法:Swift 3 UITableView数据源方法viewForHeaderInSection发出警告,swift,uitableview,swift3,ios10,xcode8,Swift,Uitableview,Swift3,Ios10,Xcode8,迁移到Swift 3后,我有以下方法: func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {} 这给了我一个警告 实例方法“tableView(tableView:viewForHeaderSection:)” 匹配可选的要求“tableView(u:TitleForHeaderSection:)” “UITableViewDataSource”协议的 修复它提
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {}
这给了我一个警告
实例方法“tableView(tableView:viewForHeaderSection:)”
匹配可选的要求“tableView(u:TitleForHeaderSection:)”
“UITableViewDataSource”协议的
修复它提供的使方法私有或添加@“nonobjc”注释的问题。如何解决警告 我的应用程序上到处都有类似的警告。实际上有两个问题。我通过在方法签名中添加下划线或将该方法移动到实现该方法的协议的正确扩展来修复所有警告 我认为你的问题可能是两者的结合 更详细的信息: 1) 您可能会忘记在“tableView:…”之前添加“下划线”字符,这使它在Swift 3中成为一种不同的方法(在Swift 2.3中,这并不重要)。所以你应该改变这一点:
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
为此:
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
2) 方法
tableView(
来自UITableViewDelegate
协议,但编译器似乎不知道此方法–它只知道UITableViewDataSource
中的方法,并尝试向您建议其中一个方法(tableView(
)。所以您要么根本不实现UITableViewDelegate
,要么实现了,但可能在另一个扩展中实现了 我也遇到了这个问题。修复它还建议我将其标记为private以使警告静音。您不能这样做,否则,将不会调用此方法。实际问题的原因是该方法已添加到数据源扩展而不是委托。谢谢你指出这一点。对我来说也是一样,刚刚添加了UITableViewDelegate
2)提示使它对我有效。令人惊讶的是,有多少不同的“技巧”让我读到的警告保持沉默。。。只需将这些方法移动到一个扩展中,以符合UITableViewDataSource的要求,将其他方法移动到一个扩展中,以符合UITableViewDelegate的要求,就可以修复它,甚至使@obj()装饰过时。谢谢