2013-05-13 6 views
1

У меня есть новыйb вопрос. У меня есть контроллер табличного представления, который отлично работает на первый взгляд. Он печатает все строки из моего Nsmutabledictionary. Когда я нажимаю на строку, он запускает эту функцию, как и ожидалось, без сбоев или давая системные ошибки:сделалSelectRowAtIndexPath не нажимает новый контроллер вида, а также нет ошибки

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]]; 

    SCInventoryLeaf *childView = [storyboard instantiateViewControllerWithIdentifier:@"inventoryleaf"]; 

    NSArray *keys = [arrInventory allKeys]; 
    id aKey = [keys objectAtIndex:indexPath.row]; 
    id anObject = [arrInventory objectForKey:aKey]; 
    childView.title = aKey; 
    childView.price = [anObject objectForKey:@"price"]; 

    [self.navigationController pushViewController:childView animated:YES]; 
} 

Но по какой-то причине, мой childView не представляет себя после onRowClick. Я правильно назвал идентификатор в своем раскадровке.

Что может быть неправильным? Где shoudl я устраняю следующее?

Редактировать - Я также упоминал, что я поставил некоторые точки останова в viewDidLoad из SCInventoryLeaf.m, но они, похоже, не срабатывают. Итак, я предполагаю, что SCInventoryLeaf.m никогда не используется? Но я почти уверен, что я сравнил отношения с моим tblviewcontroller и scinventoryleaf.

+0

Я уверен, что это очень новичок, потому что я знаю, что получил эту работу раньше. – amomin

+0

Очень хороший поставленный вопрос, хорошая информация - и хорошие попытки самоотдачи перед запросом. – matt

+0

Примечание: если вы используете раскадровку, вы можете просто соединить прототип ячейки с SCInventoryLeaf с модальным секем, и вы получите представленный вид автоматически. Вы можете сделать свою первоначальную конфигурацию в 'prepareForSegue:'. Вам вообще не понадобится реализация 'didSelectRowAtIndexPath'. – matt

ответ

2

Положить в точку останова и посмотреть, что childView не равно nil. Если это так, дважды проверьте, что «inventoryleaf» является правильным случаем. Вы назвали его «InventoryLeaf»? Вырезать и вставить из раскадровки, если необходимо.
Остальная часть вашего кода выглядит хорошо.

+0

«Я также сказал, что я поставил некоторые точки останова в viewDidLoad из SCInventoryLeaf.m, но они, похоже, не срабатывают». Это действительно говорит (и помогает) , и я согласен с @stevekohis. Попробуйте поставить точку останова и перейти через 'didSelectRowAtIndexPath', используя панель переменных, чтобы узнать, что к чему. Я уверен, что 'childView' равен нулю, потому что идентификатор' inventoryLeaf' имеет разную капитализацию в раскадровке, чем в вашем коде, поэтому они не совпадают. – matt

Смежные вопросы