gpt4 book ai didi

ios - Swift:我的自定义 UITableViewDataSource 类认为它不符合协议(protocol) 'UITableViewDataSource'

转载 作者:搜寻专家 更新时间:2023-10-31 08:23:29 25 4
gpt4 key购买 nike

我已经检查了其他几个问题,答案似乎在数据源方法的声明中。但是,我找不到我的方法声明有什么问题。

这是我的类(class):

import UIKit

class GuestControl: UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var leftTable: UITableView!
@IBOutlet weak var rightTable: UITableView!
var userList = [User]() //even numbers including 0 go on the left table, odd numbers go on the

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
//Here is where we link to that user's contact page
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: GuestTableViewCell = tableView.dequeueReusableCellWithIdentifier("guestCell") as! GuestTableViewCell

if tableView == leftTable {
cell.configureCellWithUser(userList[indexPath.row+indexPath.row])
} else {
cell.configureCellWithUser(userList[indexPath.row+indexPath.row+1])
}

return cell
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let num = Double(userList.count) / 2.0
if tableView == leftTable {
return Int(round(num)) //round up
} else {
return Int(num) //round down
}
}

这是确切的错误:

Protocol requires function 'tableView(_:numberOfRowsInSection:)' with type '(UITableView, numberOfRowsInSection: Int) -> Int'
Candidate is not '@objc', but protocol requires it
Protocol requires function 'tableView(_:cellForRowAtIndexPath:)' with type '(UITableView, cellForRowAtIndexPath: NSIndexPath) -> UITableViewCell'
Candidate is not '@objc', but protocol requires it

怎么了?

最佳答案

如错误消息所示,协议(protocol)要求 TableView 数据源方法“与 Objective-C 兼容”。这可以通过以下方式实现

  • 使您的类继承自 NSObject(或任何 NSObject 子类)

    class GuestControl: NSObject, ...
  • 或者在类定义中添加@objc属性

    @objc class GuestControl:  ...
  • 或者在数据源方法中添加@objc属性

    @objc func tableView(tableView: UITableView, numberOfRowsInSection section: Int) ...

在前两种情况下,类的所有方法都是Objective-C兼容。

如果(表) View Controller 用作 TableView 数据源,那么这会自动满足,因为 UI(Table)ViewController 继承来自 NSObject

关于ios - Swift:我的自定义 UITableViewDataSource 类认为它不符合协议(protocol) 'UITableViewDataSource',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31754366/

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