为UIViewTable转换自定义类单元失败,并显示可选的展开错误

时间:2015-09-21 22:06:02

标签: ios xcode swift swift2 ios9

我有两种类型的单元格的UITableView。第一种类型显示现有数据,第二种类型用于向表中添加新项目。所以我创建了一个子类" AddListTableViewCell"并放入" @IBOutlet weak var addListTextBox:UITextField!"财产阅读它的内容。 这个"添加列表"单元格在第一行中绘制,没有运行时错误。它被推动:

@IBAction func AddListButtonPressed(sender: UIBarButtonItem) {
    if !isAddingList {
        isAddingList = true
        ListsTableView.reloadData()
        let path = NSIndexPath(forRow: 0, inSection: 0)
        let cell = tableView.cellForRowAtIndexPath(path) as? AddListTableViewCell
        cell.addListTextBox.becomeFirstResponder()
        }
    }
}

在ListsTableView.reloadData()方法" tableView(_:cellForRowAtIndexPath:"创建了额外的单元格。再次:没有错误。

然后我改变了它的顺序,希望它能够在表的末尾显示,并添加更多的演示项目以观察它的交互(forList中的AddListButtonPressed也发生了变化:)。

现在,当我运行应用程序并按下AddListButton时,会触发func AddListButtonPressed,我得到了#34;致命错误:在解开一个Optional值时意外发现nil"用"让cell = tableView.cellForRowAtIndexPath(path)为? AddListTableViewCell"

此外,如果在应用程序启动后滚动了视图,则没有错误,但warnig" [UIWindow endDisablingInterfaceAutorotationAnimated:]调用>没有匹配-beginDisablingInterfaceAutorotation。忽略&#34。在控制台中。

我在这个网站上找到了一个解决故障线路的解决方案     让cell = tableView.cellForRowAtIndexPath(path)为? AddListTableViewCell 同     让cell = tableView.dequeueReusableCellWithIdentifier(" AddList",forIndexPath:path)为! AddListTableViewCell 它运作良好,但我仍然会发出警告。

但是为什么我应该再创建一个单元格,当它已经设置为" tableView(_:cellForRowAtIndexPath:"方法" ListsTableView.reloadData()&#34 ;是否有可能以某种方式保持"让cell = tableView.cellForRowAtIndexPath(path)为?AddListTableViewCell"以避免警告?

编辑还有一个功能,使用它(抱歉没有缩进,从手机发布):

private func addList () {
    let path = NSIndexPath(forRow: brain.tree.count, inSection: 0)
    let cell = tableView.cellForRowAtIndexPath(path) as! AddListTableViewCell
    if let listName = cell.addListTextBox.text {
        if listName.characters.filter({!" ".characters.contains($0)}).count > 0 {
            brain.newList(listName)
            cell.addListTextBox.text = ""
            isAddingList = false
            ListsTableView?.reloadData()
            performSegueWithIdentifier("ShowTasksSegue", sender: nil)
        }
    }
}

0 个答案:

没有答案