UITableView - 节标题的公开按钮随机变化

时间:2014-01-30 10:41:17

标签: xcode uitableview

我正在尝试根据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

请帮我看一下,为什么披露按钮会自行改变状态以及如何修复崩溃。

1 个答案:

答案 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