[UITableView dequeueReusableCellWithIdentifier:forIndexPath:]中的断言失败

时间:2015-07-06 18:29:22

标签: ios swift uitableview

我在导航控制器中嵌入了UIViewController,嵌入在页面视图控制器中。在我的cellForRowAtIndexPath中,我在2015-07-06 11:23:24.525 MyApp[3574:617281] *** Assertion failure in -[UITableView dequeueReusableCellWithIdentifier:forIndexPath:], /SourceCache/UIKit/UIKit-3347.44.2/UITableView.m:6245获得var cell: CellOne =

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        let result: UITableViewCell

        if (segmentedControl.selectedSegmentIndex == 0) {

            // Getting error here...
            var cell:CellOne = tableView.dequeueReusableCellWithIdentifier("CellOne", forIndexPath: indexPath) as! CellOne 

            cell.customLabel.text = array[indexPath.row]

            result = cell

        } else {

            var cell = tableView.dequeueReusableCellWithIdentifier("CellTwo", forIndexPath: indexPath) as! CellTwo

            cell.customLabelTwo.text = otherArray[indexPath.row]

            result = cell
        }

        return result

    }

1 个答案:

答案 0 :(得分:0)

你在使用故事板吗? 如果没有,你不忘记注册牢房吗?

self.tableView.registerClass(CellOne.self, forCellReuseIdentifier: "CellOne")
self.tableView.registerClass(CellTwo.self, forCellReuseIdentifier: "CellTwo")

您可以将这些调用放在viewDidLoad上(这是一个安全的地方)。必须在调用tableViewDataSource协议函数之前。