我有UITableView
声明了委托方法。 numberOfRows
& numberOfSections
会动态更新。
(NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section{}
(NSInteger)numberOfSectionsInTableView:
我需要使用[tableView reloadData]
,而不是使用reloadRowsAtIndexPath
。
但是我遇到了行数无效的崩溃。如何处理dataSource更改?让我说我有一个计数数组10,当我通过拉动使用UITableView
重新加载UIRefreshControls
时,以及来自服务器的数据。从10开始,如果数组的数量减少到1,我将如何处理reloadRowsAtIndexPath
?
[self.tableView reloadRowsAtIndexPaths:[self.tableView indexPathForVisibleRows] withRowAnimation:UITableViewRowAnimationNone]
调用它时似乎发生了崩溃。我如何处理数据数组的计数变化?
答案 0 :(得分:1)
要重新加载Tableview的特定单元格,方法为 reloadRowsAtIndexPaths:而非 reloadRowsAtIndexPath
[self.tableview reloadRowsAtIndexPaths:[self.tableview indexPathsForVisibleRows] withRowAnimation:UITableViewRowAnimationNone];
但是,为了使reloadRowsAtIndexPaths正常工作,数据源需要一致。由于已经加载了索引路径。
如果您仍然使用此方法,您将获得arrayIndexOutofBound错误或单元格中的重复值(取决于数据源的增加或减少)。
答案 1 :(得分:1)
//call begin and end updates while performing some hard core actions on tableview
[My_Table beginupdates];
[My_Table reloadRowsAtIndexPaths:[My_Table indexPathsForVisibleRows] withRowAnimation:UITableViewRowAnimationNone];
[My_Table endupdates];
hope it will helps you.
答案 2 :(得分:0)
你可以试试这个。
[tblMe beginUpdates];
[tblMe reloadRowsAtIndexPaths:[NSArray arrayWithObjects:[NSIndexPath indexPathForRow:0 inSection:0], nil] withRowAnimation:UITableViewRowAnimationNone];
[tblMe endUpdates];
希望这可能有所帮助!!!