Swift - 覆盖UIViewController与UITableViewController中的函数

时间:2014-12-25 00:28:46

标签: ios xcode uitableview swift

当我使用UITableViewController创建一个tableView时,你会得到很多覆盖函数,但是当你使用常规的UIViewController时,你会在使用这些相同的覆盖函数时遇到错误而你被迫将它们改为常规函数。我相信这就是为什么我的核心数据不会加载到我的单元格中,并尝试使用viewDidLoad函数来加载我的数据。

我知道我的代码应该可以工作,因为我要做的就是将所有代码从UITableViewController传输到UIViewController,我的代码在我的UITableViewController中工作。

到目前为止我的努力:

override func viewDidLoad() {

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        // Configure the cell...

        let CellID:NSString = "CELL"

        var cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier(CellID) as UITableViewCell

        if let ip = indexPath as Optional {

            var data:NSManagedObject = myList[ip.row] as NSManagedObject
            cell.textLabel!.text = data.valueForKeyPath("username") as? String
        }

        return cell
    }
}

覆盖功能是我的单元格为空的原因,还是在使用常规UIViewController显示tableView时还有其他方面?

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

(1)您必须在类中添加UITableViewDelegate才能访问委托方法,例如:

class ViewController: UIViewController, UITableViewDelegate {

UITableViewDelegate添加到课程后,您的UITableView委托功能应自动完成。

此外,请确保将UITableView的委托设置为self,以便让代表方法填充表格。

(2)现在,您的cellForRowAtIndexPath方法 viewDidLoad内。移动它,使其不包含在任何其他方法中。