0

2 つのテーブルビューを含むビューを作成しています。そのうちの 1 つは self.tableView で、もう 1 つは searchDisplayController.searchResultsTableView で、検索結果を表示します。コードは以下のとおりです。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (tableView == self.searchDisplayController.searchResultsTableView) {
        return [searchResultArray count];
    } else if (tableView == self.tableView){
        return [menuItems count];
    } }

問題は、[menuItems count] の戻り値が 10 であることを知っていたことです。[searchResultArray count] の戻り値が 10 より大きい場合、次のエラー メッセージが表示されます。

2012-09-26 17:11:50.332 searchResultArray count:80
2012-09-26 17:11:50.337 *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 10 beyond bounds [0 .. 9]'

しかし、[searchResultArray count] の戻り値が 10 より小さい場合は、正常に動作します。これを修正する方法は?お知らせ下さい!ありがとう!

4

4 に答える 4

0

iMeMyself が言ったように、動的プロトタイプを両方のテーブルビューに割り当てる必要があります。データソースメソッドが呼び出されると、テーブルビューが動的にチェックされるためです。そのため、動的プロトタイプを割り当てました。

于 2012-09-26T11:58:00.067 に答える
0

インターフェイスビルダーを使用している場合は、TableViewController をチェックしてください

ビューコントローラーの下に「テーブルビュー」があるはずです。

テーブルビューの属性インスペクターで「コンテンツ」をチェックします。割り当てられている「動的プロトタイプ」または「静的セル」の場合は?

「動的プロトタイプ」に変更します。

于 2012-09-26T09:28:07.327 に答える
0

問題は検索メソッドにあります。検索ロジックを実行してオブジェクトを searchArray に追加するたびに、追加を開始する前にオブジェクトをクリアする必要があります。使用できます

[searchResultArray removeAllObjects];
于 2012-09-26T09:28:11.383 に答える
-1

両方のテーブルビューが「動的プロトタイプ」として設定されていることを確認してください

于 2012-09-26T09:45:24.900 に答える