2013-04-06 4 views
0

Я новичок в Objective C и iOS. Я встроил контроллер навигации в контроллер просмотра в раскадровку. Затем я добавил еще один контроллер представления в раскадровку, которая является контроллером корневого представления. У этого есть кнопка, которая соединяется с другим контроллером представления, у которого есть табличный вид, добавленный к нему. Когда я запускаю сборку, я получаю следующее исключение: «Причина NSInvalidArgumentException:» - [UIViewController tableView: numberOfRowsInSection:]: непризнанный селектор, отправленный в экземпляр 0x686d160 '. Вот код в файле реализации (только relaevant методов) Скажите, пожалуйста, если мне нужно предоставить больше коды:Исключение относительно UITable view

 (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
    { 
    return [contacts count]; 
    } 


    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:  (NSIndexPath *)indexPath 
    { 
    static NSString *simpleTableIdentifier = @"RecipeCell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; 

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

    cell.textLabel.text = [contacts objectAtIndex:indexPath.row]; 
    return cell; 
} 
+0

Есть ли у массива контактов значения? – Dolo

+0

ясно показывает, что ваш массив 'contacts' имеет некоторые недопустимые значения, такие как пустые или нулевые. Поэтому убедитесь, что он не является нулевым и имеет некоторое значение. – iEngineer

+0

Вы можете отправлять сообщения объекту nil, но вы не можете отправлять сообщения на освобожденный объект. – Jeremy

ответ

0

Вы отправляете сообщение «Count» в переменных контактах, которые были высвобождены. Когда вы назначаете объект контактам, убедитесь, что он владеет им, отправив на него сообщение сохранения или используя эквивалент ARC, если он включен.

+0

@Dolours - это значения в массиве - (void) viewDidLoad { Контакты = [NSArray arrayWithObjects: @ "Яйцо Бенедикт", @ "Гриб Ризотто", @ "Полный завтрак", @ "Гамбургер", @ "Хэм и «Яйцо сэндвич», «Кремовое Брелье», «Белый шоколадный пончик», @ «Starbucks Coffee», @ «Растительный карри», «Мгновенная лапша с яйцом», «Лапша с барбекю», «Японская лапша» с свининой ", @" Зеленый чай ", @" Тайский креветочный торт ", @" Angry Birds Cake ", @" Ветчина и сыр Панини ", ноль]; [super viewDidLoad]; } –

+0

В этом случае контактам присваивается автоматически выпущенный экземпляр массива. Вызовите [контакты сохраняются]; – Jeremy

+0

есть ошибка: «сохранение» недоступно в автоматическом подсчете ссылок –