0

私はこことIOSプログラミングの両方に慣れていないので、しばらくの間、newbeeの質問に耐えてください:]

これが私の質問の前の私のアプリケーションの状況です:

3つの異なるサブビューを追加したビューがあります。(1-カテゴリ、2-単語、3-ルール)カテゴリサブビュー内にカテゴリの表があります。(カテゴリplistと配列からの読み取りと書き込み)

選択したカテゴリに応じて、単語サブビューの単語テーブルのテーブル材料を変更しています。このテーブルには、ユーザーが選択したカテゴリに入力した単語が保持されます。(キーがcategoriesテーブルのカテゴリ名であり、値が私が事前にplistに入力した文字列の配列であるnsmutabledictionaryからの読み取りと書き込み)

わかりやすくするための例:私のカテゴリ配列にはサイズ、色サイズカテゴリの単語配列には次のように3つの文字列があります: "tiny"、 "big"、"huge"色カテゴリの単語配列には2つの文字列がありますその中に:「赤」、「青」

最初に「サイズ」カテゴリを選択すると、そのカテゴリ内の単語を取得し、カテゴリサブビューから単語サブビューに移動すると、「サイズ」カテゴリ内のすべてがuitableviewに正しく表示されます。(「小さい」、「大きい」、「大きい」と表示されます)

しかし、カテゴリのサブビューに戻って、今回は[色]を選択し、単語のサブビューに戻ると、クラッシュします。

tableView:cellForRowAtIndexPath:メソッドを呼び出しているようで、次のようにNSRangeExceptionが発生します。

[NSMutableArray objectAtIndex:]: index 2 beyond bounds

簡単に言うと、cellForRowAtIndexPathメソッドが存在しないインデックスを呼び出している理由を知りたいのです。cellForRowAtIndexPathメソッドの内部は次のようになります。

[self reinitializeWordsDictionary];
[self reinitializeWordsInSelectedCategoryArray];

static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    cell = [[[UITableViewCell alloc] 
        initWithStyle:UITableViewCellStyleDefault 
        reuseIdentifier:CellIdentifier] autorelease];
}

cell.textLabel.text = [wordsInSelectedCategoryArray objectAtIndex:indexPath.row];

return cell;

回答ありがとうございます、

tiw

4

3 に答える 3

3

これを読んでいる人がcellForRowAtIndexPathによってスローされないNSRangeExceptionsを持っている場合は、UITableViewが誤って「静的セル」コンテンツに設定されていないことを確認してください。

于 2011-11-11T06:28:09.187 に答える
0

のデータソースの- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; メソッドがUITableView間違った値を配信しているように思えます。このメソッドにブレークポイントを設定して確認し、戻り値を評価します。

于 2011-02-21T16:54:25.810 に答える
0

何をお返ししますか

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;

于 2011-02-21T16:55:39.597 に答える