Swift - 覆盖UIViewController vs UITableViewController中的函数



当我使用 UITableViewController 创建表视图时,你会得到很多覆盖函数,但是当你使用常规的 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 显示表视图时还有其他方面?

任何建议将不胜感激。

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

class ViewController: UIViewController, UITableViewDelegate {

UITableViewDelegate添加到类后,UITableView委托函数应自动完成。

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

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

最新更新