将动态文本字段单元格插入到表格视图 - Swift 中的部分



我是 Swift 的初学者,遇到了一个问题。

我有一个包含 3 个部分的 TableView 控制器,前两个部分由一个单元格中的一个文本字段组成。但是,对于开头的第三个单元格,它只有一个单元格(文本字段(。每次用户在文本字段上按 Return 键时,我都想在编辑的文本字段下方插入一行由一个文本字段组成的行。(例如,当您在"通讯录"应用中添加多个电话号码时(。

我创建了一个UITextField Array:TextFieldArrayPayers

我的代码看起来像这样:当用户按 Return 键时连接到文本字段:

@IBAction func AddParticipant(sender: AnyObject) {
        tableView.beginUpdates()
        textFieldArrayPayers.append(UITextField());
        tableView.insertRowsAtIndexPaths([
            NSIndexPath(forRow: textFieldArrayPayers.count, inSection: 2)
            ], withRowAnimation: .Automatic)
        tableView.endUpdates()
    }

并管理我的部分:

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 3
    }
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if section==2
    {
        return textFieldArrayPayers.count+1
    }
    else
    {
        return 1;
    }
}

当我运行我的程序时,我尝试编辑第一个文本字段,当我按 Enter 或 Return 时,我得到这个:

Terminating app due to uncaught exception 'NSRangeException',
reason: '*** -[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]'

我看了许多类似的主题,但从未找到真正的解决方案。

提前感谢那些获得解决方案的人

在开始批量更新之前更新模型:

@IBAction func AddParticipant(sender: AnyObject) {
        textFieldArrayPayers.append(UITextField());
        tableView.beginUpdates()
        tableView.insertRowsAtIndexPaths([
            NSIndexPath(forRow: textFieldArrayPayers.count, inSection: 2)
            ], withRowAnimation: .Automatic)
        tableView.endUpdates()
    }

有关 iOS 的表视图编程指南的更多信息

最新更新