2011-04-24 6 views
0

取得エラー編集する場合:「無効なアップデート:セクションの無効な数[self.routineTableView insertSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationBottom];のUITableViewクラッシュラインで

*がキャッチされない例外が原因アプリ「NSInternalInconsistencyException」、理由を終了します。更新(1)後のテーブルビューに含まれるセクションの数は、更新前のテーブルビューに含まれるセクションの数(1)、挿入または削除されたセクションの数をプラスまたはマイナス(1挿入、0削除された)。

- (void)setEditing:(BOOL)editing animated:(BOOL)animated { 
[super setEditing:editing animated:animated]; 
[self.routineTableView setEditing:editing animated:animated]; 

if(editing){ 
    [self.routineTableView insertSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationBottom]; 
} else { 
    // delete section 
} 

}

更新:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return [[self.fetchedResultsController sections] count]; 
} 

答えて

1

あなたは更新後のセクションの現在の数を返すことを確認してください。つまり、プライベート変数currentNumberOfSectionsにあるセクションの数を追跡する方法が必要です(NSInteger)。挿入するたびにインクリメントします(セクションを削除する場合は減らします)。そして、このような何かにあなたのTableViewControllerであなたの-numberOfSectionsInTableView方法を更新することを忘れないでください:あなたは、新しいセクションを追加しているここでTableViewController、ためにセクションの現在の数を返している

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    return currentNumberOfSections; 
} 

チェックを。

それはこのようなものになるだろう、あなたの場合は

self.routineTableView追加/更新によって参照されるクラスで

- (void)setEditing:(BOOL)editing animated:(BOOL)animated { 
[super setEditing:editing animated:animated]; 
[self.routineTableView setEditing:editing animated:animated]; 

if(editing){ 
    [self.routineTableView insertSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationBottom]; 
    currentNumberOfSections++; 
} else { 
    // delete section 
} 

そして:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return currentNumberOfSections; 
} 

は、コントローラのヘッダにNSInteger currentNumberOfSectionsを追加することを忘れないでください。ファイル。私は@privateセクションにも書いていますが、これはあなた次第です。コントローラの指定されたイニシャライザでは、この変数の値をデフォルトの優先セクション数:currentNumberOfSections = 1に設定します。

幸運を祈る!

+0

ありがとうZiggy。私はあなたが言っていることを理解していますが、私はこれを解決するために何をしなければならないかについて、まだ混乱しています。私は 'numberOfSections'メソッドを追加しました。 –

+0

多分問題は、セクションを 'self.routineTableView'に挿入して、別のコントローラ' self.fetchedResultsController'からセクションの数を返していることです。 – Ziggy

+0

ええ、あなたが正しいです。これを修正するにはどうすればいいですか? –

関連する問題