当我尝试将委托和数据源设置为 UIViewController 时,所有在 UITableViewController 中运行良好的函数都会被检测为错误。
func numberOfSectionsInTableView(tableView: UITableView!) -> Int {
// #warning Potentially incomplete method implementation.
// Return the number of sections.
return 1
}
func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete method implementation.
// Return the number of rows in the section.
return 10
}
错误是
FirstViewController.swift:11:1: Type 'FirstViewController' does not conform to protocol 'UITableViewDataSource':
UIKit.UITableViewDataSource:2:48: Protocol requires function 'tableView(_:numberOfRowsInSection:)' with type '(UITableView, numberOfRowsInSection: Int) -> Int'
FirstViewController.swift:29:10: Candidate has non-matching type '(UITableView!, numberOfRowsInSection: Int) -> Int'
UIKit.UITableViewDataSource:3:48: Protocol requires function 'tableView(_:cellForRowAtIndexPath:)' with type '(UITableView, cellForRowAtIndexPath: NSIndexPath) -> UITableViewCell'
FirstViewController.swift:29:10: Candidate has non-matching type '(UITableView!, numberOfRowsInSection: Int) -> Int'
这是Xcode 6(不是测试版)。是否在 UIViewController ?
中不再支持表视图委派(相同的代码在Xcode 6,Beta 5中运行,但在Xcode 6 GM中没有。)
答案 0 :(得分:7)
您正在使用implicitly unwrapped optionals(UITableView!
)。但是这段代码不再使用选项。
方法签名现在如下所示:
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 0;
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 0;
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
return UITableViewCell()
}
答案 1 :(得分:1)
对于Xcode 6,要覆盖UIViewController
中的委托功能,请使用:
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("CellID", forIndexPath: indexPath) as UITableViewCell
// Configure the cell...
return cell
}