[英]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。
通过将数据存储在array
或dictionary
可以轻松实现。 如果要添加或删除行,只需更新数组或字典。 只需从numberOfRowsInSection
方法返回[array count]
或[dictionary count]
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.