3

私のiPhoneアプリの一部には、UITableViewグループ化された形式で3つの静的セクションが表示されます。ただし、場合によっては(ユーザー入力に基づいて)、ViewControllerがテーブルを表示するときにこれらのセクションの最後が表示されないことが最も適切です。

コントローラのviewDidLoadメソッドに、条件付きで実行される次のコード行を追加しました。

if ([self.formula containsElementWithoutStableIsotopes]) {
    NSLog(@"Deleting section 2 ...");
    NSUInteger sectionToDelete = 2;
    [self.tableView deleteSections:[NSIndexSet indexSetWithIndex:sectionToDelete] 
                  withRowAnimation:UITableViewRowAnimationAutomatic];
}

「セクション2を削除しています...」がコンソールに記録されているので、このコードが実行されていることはわかりますが、テーブルは影響を受けていないようです。3つのセクションはすべて通常どおり表示されます。

理想的なケースでは、テーブルビューが表示される前に、セクション2を削除することをお勧めしますが、表示されたときにセクション2を削除しても問題ありません。ただし、代わりに上記のコードをメソッド内に配置すると、削除の前後のセクションの数が一致しないためviewDidAppear、プログラムによってが発生します。NSInternalInconsistencyException

このトピックについてご協力いただければ幸いです。

4

2 に答える 2

5

以下のコードを使用してください。

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    sectionToDelete = 1;
    [self.tableView deleteSections:[NSIndexSet indexSetWithIndex:sectionToDelete] withRowAnimation:UITableViewRowAnimationFade];
    [self.tableView reloadData];

}



- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return 3 - numberOfSectionsToDelete;
}
于 2012-07-07T15:59:49.603 に答える
0

最善の方法は-

[myTableView beginUpdates];
[myArray removeObjectAtIndex:myIndexPath.section];
[myTableView deleteSections:[NSIndexSet indexSetWithIndex:myIndexPath.section] 
           withRowAnimation:UITableViewRowAnimationRight];
[myTableView endUpdates];
于 2014-09-21T04:48:48.130 に答える