无法将UITableViewDataSouce和UITableViewDelegate设置为UIViewController

时间:2014-09-16 06:23:12

标签: xcode uitableview uiviewcontroller swift xcode6

当我尝试将委托和数据源设置为 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中没有。)

2 个答案:

答案 0 :(得分:7)

您正在使用implicitly unwrapped optionalsUITableView!)。但是这段代码不再使用选项。

方法签名现在如下所示:

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
}