我的 UIView 中有一个 UITableView,它具有可变数量的部分,具体取决于某些条件。我收到以下异常。
由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无效更新:无效的节数。更新后表视图中包含的节数(1)必须等于更新前表视图中包含的节数(2),加上或减去插入或删除的节数(1插入,0已删除)。
从错误看来,我在数据源中有不同数量的部分???我该如何解决问题?
这是我的界面:
@interface bookDetailView : SomeView <UITableViewDelegate,UITableViewDataSource>
{
UITableView *bookDetailTableView;
....
}
这是我的视图初始化
UIView *view = [[[UIView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame] autorelease];
view.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;
self.view = view;
UITableView *tableView = [[[UITableView alloc] initWithFrame:view.bounds style:UITableViewStyleGrouped] autorelease];
tableView.autoresizingMask = (UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight);
tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
tableView.delegate = self;
tableView.dataSource = self;
tableView.sectionIndexMinimumDisplayRowCount = 20;
bookDetailTableView = tableView;
[self.view addSubview:bookDetailTableView];
代码在 insertSections 崩溃 ....
if (![book method1])
{
[bookDetailTableView insertSections:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1,1)] withRowAnimation:UITableViewRowAnimationFade];
}
else
{
[bookDetailTableView insertSections:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(2,1)] withRowAnimation:UITableViewRowAnimationFade];
}
numberOfSectionsInTableView
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
if (editMode)
{
if(newbookFlag || listBook )
{
return 1;
}
else
{
if(![book preferable])
{
return 2;
}
else
{
return 3;
}
}
}
}
任何的想法?我尝试了 beginUpdates 和 endUpdates ,问题仍然存在。