0

我是这里和 IOS 编程的新手,所以请暂时忍受我的新手问题:]

这是我提出问题之前的申请情况:

我有一个视图,其中添加了 3 个不同的子视图。(1 个类别、2 个单词和 3 个规则)在类别子视图中,我有一个类别表。(从类别 plist 和数组中读取和写入)

根据所选类别,我正在更改单词子视图中单词表的表成分。此表保留用户为选定类别输入的单词。(从 nsmutabledictionary 读取和写入,其键是类别表中的类别名称,其值是我预先输入到 plist 的字符串数组)

现在举个例子来说明问题:我的类别数组有:Size,Color 我的 Size 类别的单词数组中有 3 个字符串,如下所示:“tiny”、“big”、“huge” 我的 Color 类别的单词数组有 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;

提前感谢您的答案,

时间

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