iPhone:崩溃重装的tableview行

问题描述:

当我使用下面的代码段 - 它应该是简单的,但它引起了我很大的麻烦:iPhone:崩溃重装的tableview行

NSUInteger index[] = {1,0}; // top row of section one 
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath  
indexPathWithIndexes:index length:2]] withRowAnimation:UITableViewRowAnimationNone]; 

第二行的代码崩溃,出现错误:“第零部分中的行数与更新前第零部分中的行数不相等”。

这个错误是真的,我改变了第零部分的行数。但是,这不应该影响我是否可以在第1节重新加载一行!?

-

我误解的东西是如何工作的,或者是别的东西去错了地方?任何帮助或想法都非常感谢:)

我认为你还需要更新numberOfRowsInSection

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 

    return rowCount; 
} 
+0

我正在更新此内容。令人沮丧的是,第1节中的行数在更新之前和之后保持不变。是的,第0部分中的行数会改变,这会导致错误。但是当然,我可以重新加载第1部分,而第0部分中的行数发生变化? – 2011-05-10 09:31:03

+1

您应该为每个部分单独返回任意行。您可以在此方法中使用开关情况:switch(indexPath.section){ \t case0:case1:} – Rony 2011-05-10 09:37:18

+0

但是错误说“零中的行数是不等于更新前的第零部分的行数“所以我想你试图更新第0部分的地方。请确保您更新基于部分 – visakh7 2011-05-10 09:37:26

如果改变了(可能是删除或添加它的一些行)(重装)的行数在第0,那么 -

(NSInteger的)的tableView:(UITableView的 *) tableView numberOfRowsInSection:(NSInteger)section

被调用来获取新的行数。在这里你需要返回正确的行数,即少一行,如果你删除了第零部分中的一行。所以基本上,如果你在部分0的行数中返回[someArray count],你也需要更新这个someArray。

+0

我已经这样做了 - 部分0中的行数发生了变化,而在1中它保持不变。我试图重新加载第一部分的第一行,但是我得到了与第0部分相关的错误。 – 2011-05-10 09:49:59

+0

可以假设最初在部分0中有5行。并且您返回5作为第0部分中的行数数据源方法。 您说过,您更改了第0节中的行数。因此,再次调用numberOfRowsInSection:方法以获取每个节的更新行。 在这里,你现在不应该返回5。您需要返回更新的值,即第0部分中的新行数。 错误说明清楚。 – 2011-05-10 09:57:49

+0

是的,你是对的,这与第1部分无关。但问题是数据源方法numberOfRowsInSection:需要在第0节中更新的行数(因为您更新了第0节中的行数) – 2011-05-10 09:59:56