我正在尝试根据Apple的“Table View Animations and Gestures”示例代码创建自己的表格视图,显示分层数据。 在Apple的演示中一切正常,直到我添加的根项目多于屏幕上可显示的项目。
问题是,如果我展开第一个根项并向下滚动,则最后一个根项的显示按钮会显示展开状态。 然后,如果我滚动到顶部(有时需要重复几次),第一个项目的公开按钮已经显示折叠状态,但项目仍然展开。 如果我点击这样的项目,应用程序崩溃并显示错误:
'NSInternalInconsistencyException',原因:'尝试将第0行插入第0部分,但更新后第0部分只有0行'
我从这里复制了示例代码: https://developer.apple.com/library/ios/samplecode/tableviewupdates/TableViewUpdates.zip
数据源是“PlaysAndQuotations.plist”,它已更改如下: 复制所有3个根dict项(也包括它们的dicts数组)4次,因此它包含12个根项及其所有子项。
我的改编的Plist数据文件可以在这里下载: https://drive.google.com/file/d/0B__nLmZ1h_-eUHVlTV9FbzN2aGc/edit?usp=sharing
请帮我看一下,为什么披露按钮会自行改变状态以及如何修复崩溃。
答案 0 :(得分:1)
这解决了问题
(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 添加以下内容:
if (section == self.openSectionIndex ){
sectionHeaderView.disclosureButton.selected = YES;
}
else
sectionHeaderView.disclosureButton.selected = NO;
APLSectionHeaderView - (void)toggleOpenWithUserAction:(BOOL)userAction {
// Comment this line self.disclosureButton.selected = !self.disclosureButton.selected;
if (userAction) {
// toggle the disclosure button state
self.disclosureButton.selected = !self.disclosureButton.selected; //Add here