繁体   English   中英

尝试在UITableView中插入新行时,iOS应用程序崩溃

[英]iOS application crashes when trying to insert new row in UITableView

[self.tableView beginUpdates];
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:0]] withRowAnimation:YES];
[self.tableView endUpdates];

这段代码使我的iOS应用程序崩溃,并返回以下错误:

无效的更新:第0节中的行数无效。更新(0)之后,现有节中包含的行数必须等于更新(0)前该节中包含的行数,再加上或减去该数字该部分插入或删除的行数(已插入1个,已删除0个)。

有人可以告诉我为什么吗? 怎么说更新后的行数为零,而同时说1插入 ,0删除呢?

更新

当我在运行时收到推送通知时,上面的代码就会触发。 发生这种情况时,委托将接收到的数据添加到存储在.plist文件(表视图用于填充其单元格)中的字典中,然后调用RootViewController中的自定义方法,该视图位于表视图中。 此方法执行上面的代码,然后崩溃。 然而,当我登录[theDictionary count]- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section的数量递增,就像它应该崩溃之前

另外值得注意的是,当我登录self.tableview时,当RootViewController在启动时加载时以及在接收到推送通知时,会从RootViewController接收不同的“内存地址”。 也许这与它有关?

这是我的- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section方法:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [theDictionary count];
}

和错误的图片:

错误

每当您对表视图的数据源进行任何更改时, numberOfRowsInSection方法都应返回正确的行数。

例如,如果表中的总行数为5,并且您打算再增加一行,则numberOfRowsInSection方法应返回6。

通过将数据存储在arraydictionary可以轻松实现。 如果要添加或删除行,只需更新数组或字典。 只需从numberOfRowsInSection方法返回[array count][dictionary count]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM