NSRangeException при изменении данных uitableview - PullRequest
0 голосов
/ 21 февраля 2011

Я новичок здесь и в программировании на IOS, поэтому, пожалуйста, ответьте на мои вопросы новичка на некоторое время:]

Вот ситуация с моим заявлением перед моим вопросом:

У меня естьвид, в котором я добавил 3 разных подпредставления.(1-категории, 2-слова и 3-правила) В подвиде категорий у меня есть таблица категорий.(читает и пишет из списков категорий и списков)

В соответствии с выбранной категорией я изменяю ингредиенты таблицы для таблицы слов в подпредставлении слова.В этой таблице хранятся слова, которые пользователь вводит для выбранной категории.(читает и пишет из nsmutabledictionary, ключами которого являются имена категорий из таблицы категорий, а значениями являются массивы строк, которые я предварительно ввел в plist)

Теперь пример, чтобы прояснить ситуацию: мойМассив категорий имеет: размер, цвет Массив моих слов для категории «Размер» содержит 3 строки, например: «крошечный», «большой», «огромный» Массив моих слов для категории «Цвет» содержит 2 строки, например: «красный»,"blue"

Сначала, когда я выбираю категорию "Size", я иду и выбираю слова в этой категории, а когда я перехожу из подпредставления категорий в подпредставление слов, я правильно вижу все, что находится внутри категории "Size" в моем 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

Ответы [ 3 ]

3 голосов
/ 11 ноября 2011

Если у любого, кто читает это, есть исключения NSRangeException, не генерируемые cellForRowAtIndexPath, убедитесь, что для вашего UITableView неправильно установлено содержимое «статические ячейки».

0 голосов
/ 21 февраля 2011

Что вы отдаете обратно

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

0 голосов
/ 21 февраля 2011

Мне кажется, что метод - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; источника данных UITableView выдает неправильные значения. Я бы проверил это, установив точку останова для этого метода, и оценил бы возвращаемые значения.

...