【问题标题】:How to delete table rows programmatically?如何以编程方式删除表行?
【发布时间】:2025-12-24 05:35:11
【问题描述】:

我有一个表,我正在使用 tableViewController 操作(没有笔尖,控制器正在幕后创建表) 我正在尝试根据行号从表中删除一行;我可以从用于在 cellForRowAtIndexPath 中创建单元格的数组中删除它,但是如果我尝试执行以下操作,我会收到一个奇怪的错误,这与 tableView:commitEditingStyle:forRowAtIndexPath 中的代码相同: 在哪里可以正常工作

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:i+1 inSection:1]

[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];

报错

-[_WebSafeForwarder forwardInvocation:]

然后跳出方法但不让app崩溃

谁能帮忙?

【问题讨论】:

    标签: iphone uitableview


    【解决方案1】:

    您需要在此块中执行此操作。

    [self.tableView beginUpdates];
    
    ///
    
    [self.tableView endUpdates];
    

    注意一件事,当块到达终点时

    - (void) numberOfRowsInSection:(NSInteger)section
    

    将再次调用。所以你还需要更新表格视图中的行数。

    希望这会有所帮助。

    谢谢,

    马杜普

    【讨论】:

      【解决方案2】:

      你的第一行缺少分号。

      如有疑问,请清理语法...

      作为观察点,与我共事和交谈过的大多数程序员都非常讨厌 UITableViewController。它确实没有为用户添加任何功能,只是混淆了开发人员可能真正想要控制的东西......例如通过 XIB 的表格位置。

      这只是一个方便的课程,根据我的经验,它引起的问题比它防止的要多。

      【讨论】:

      • 代码里居然有分号——剪切粘贴错误!