我UITableView
上有一个ViewController
它有n
个部分,我的第一部分总是显示我的愿望清单产品(仅限基础)在SettingsController
上启用愿望清单选项每当我在DetailViewController
我的<{1}}我的愿望清单中添加产品时触发NSNotificatiion
到我的ViewController
,它将获取 Wishlist 记录。
我的numberOfRowsInSection:
始终返回1
因为,UITableView + UICollectionView
组合可以生成水平+垂直滚动。
所以,我正在以下面的方式重新加载我的部分,
if (isWishListSectionReloadRequires) {
NSArray *deleteIndexPaths = [NSArray arrayWithObjects:
[NSIndexPath indexPathForRow:0 inSection:0],
nil];
NSArray *insertIndexPaths = [NSArray arrayWithObjects:
[NSIndexPath indexPathForRow:0 inSection:0],
nil];
[tableView beginUpdates];
[tableView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationNone];
[tableView deleteRowsAtIndexPaths:deleteIndexPaths withRowAnimation:UITableViewRowAnimationNone];
[tableView endUpdates];
} else {
[tableView reloadData];
}
但是,我正面临着崩溃,
断言失败 - [UITableView _endCellAnimationsWithContext:],/ SourceCache / UIKit_Sim / UIKit-2380.17 / UITableView.m:1054 2016-11-04 04:25:15.921估计[9025:c07] ***终止应用程序未捕获的异常'NSInternalInconsistencyException',原因:'无效更新:无效的节数。更新后的表视图中包含的节数(10)必须等于更新前的表视图中包含的节数(10),加上或减去插入或删除的节数(插入1个,1个)删除)
谁能告诉我可能是什么原因?任何想法都将不胜感激!!
答案 0 :(得分:1)
您可以使用UITableView的reloadSections方法。
目标C
NSRange range = NSMakeRange(0, 1);
NSIndexSet *section = [NSIndexSet indexSetWithIndexesInRange:range];
[self.tableView reloadSections:section withRowAnimation:UITableViewRowAnimationNone];
<强>夫特强>
tableView.reloadSections(NSIndexSet(index: 2), withRowAnimation: .None)
答案 1 :(得分:0)
您可以重新加载Collection View,因为您只需更新心愿单。
[collectionView reloadData];
如果你需要水平和垂直滚动,一旦签出RTTwoDimmensionalScroll
,就会有很多第三方lib答案 2 :(得分:0)
使用以下方式重新加载,不要忘记重新加载开始更新和结束更新中的特定部分,以便页眉和页脚也得到更新。
[tableView beginUpdates];
NSIndexSet *section = [NSIndexSet indexSetWithIndex:0];
[self.tableView reloadSections:section withRowAnimation:UITableViewRowAnimationAutomatic];
[tableView endUpdates];