在 TableView 中添加其他行

Posted

技术标签:

【中文标题】在 TableView 中添加其他行【英文标题】:Add additional rows in TableView 【发布时间】:2016-10-22 15:15:36 【问题描述】:

我使用 Swift 3。 我有 7 行的 UITableView:

override func viewDidLoad() 
        super.viewDidLoad()        
        self.tableView.delegate = self
        self.tableView.dataSource = self        


func tableView(_ tableView:UITableView, numberOfRowsInSection section:Int) -> Int
            
        return 7
    

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell

    if (IndexPath.row == 6)
    
        tableView.beginUpdates()
        var index = IndexPath(row: 7, section: 0)
        tableView.insertRows(at: [index], with: UITableViewRowAnimation.automatic)                    
        tableView.endUpdates()
    

当我滚动到表格中的最后一个单元格时,我想添加其他单元格。 但是我收到了这个错误:

无效更新:第 0 节中的行数无效。 更新 (7) 后包含在现有节中的行必须是 等于该节之前包含的行数 update (7),加上或减去插入或删除的行数 该部分(插入 1 个,删除 0 个)并加上或减去数量 移入或移出该部分的行(0 移入,0 移出)。

【问题讨论】:

【参考方案1】:

当你从 tableView 插入或删除任何行时,你应该更新你的数据源,以便对象的数量保持等于 tableView 中的行数

func tableView(_ tableView:UITableView, numberOfRowsInSection section:Int) -> Int         
    return dataSource.count


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    if (IndexPath.row == 6) 
        tableView.beginUpdates()
        var index = IndexPath(row: 7, section: 0)
        let newObject = // create new model object here
        dataSource.insert(newObject, at: 7)
        tableView.insertRows(at: [index], with: UITableViewRowAnimation.automatic)                    
        tableView.endUpdates()
    

【讨论】:

以上是关于在 TableView 中添加其他行的主要内容,如果未能解决你的问题,请参考以下文章

Swift:tableView 行的高度,其 tableView 单元格具有动态行数的嵌套 tableView

当我将 tableview 添加到 ViewController 时,tableview 未正确添加

为啥在 searchBar 和 tableview 之间添加空格?

仅在某些单元格中添加SubView

滚动视图内的不可滚动的tableview

如何仅在表格视图的文本最后一部分中添加页脚文本?