2009-12-16 2 views
1

Эй, все. Я пытаюсь включить простой UINavigationController в мое приложение панели вкладок. У меня есть TabBar, установленный как корневой контроллер, и все, кажется, работают нормально. Этот метод называется правильно и не прерывается, но он не изменяется в моем подробном представлении. Я полностью потерял это.-didSelectRowAtIndexPath не работает для меня. iPhone SDK 3

Я следую инструкциям с этого видео: http://www.youtube.com/watch?v=LBnPfAtswgw&feature=player_embedded#. Я изменил некоторые вещи, чтобы заставить его работать с тем, что я пытаюсь выполнить, но в основе логики я оставил то же самое. Она работает с SDK 2. *, и я использую 3. *. Я предполагаю, что это имеет к этому какое-то отношение. Может кто-нибудь мне помочь? Это то, что мой didSelectRowAtIndexPath выглядит следующим образом:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    // Navigation logic may go here. Create and push another view controller. 
NSInteger row = [indexPath row]; 
if(self.detailViewController == nil) { 
    LogEntryDetailViewController *logEntryDetail = [[LogEntryDetailViewController alloc] 
       initWithNibName:@"LogEntryDetailView" bundle:[NSBundle mainBundle]]; 
    self.detailViewController = logEntryDetail; 
    [logEntryDetail release]; 
} 

detailViewController.title = [NSString stringWithFormat:@"%@", [logEntriesArray objectAtIndex:row]]; 

ProgNameAppDelegate *delegate = (ProgNameAppDelegate *)[[UIApplication sharedApplication] delegate]; 
[delegate.logViewNavController pushViewController:self.detailViewController animated:YES]; 
} 

Я схожу с ума здесь. Если мне нужно опубликовать это в другом месте, я буду счастлив сделать это. Заранее спасибо!

+0

Что такое корневой контроллер для вашего контроллера навигации? – Anurag

+0

Выглядит хорошо для меня, хотя получение делегата приложения и получение контроллера навигации оттуда немного странно и может быть проблемой (я должен был бы увидеть больше кода, чтобы точно знать). Вы, вероятно, можете уйти с [self.navigationController pushViewController: ...] – bpapa

+0

Im новое для iPhone SDK, поэтому я не совсем уверен, что вы спрашиваете Anurag. Пожалуйста, объясните, чтобы я мог правильно ответить. Я отвечу на вопрос bpapa ниже. – Trent

ответ

1

Вы должны изменить эти строки:

ProgNameAppDelegate *delegate = (ProgNameAppDelegate *)[[UIApplication sharedApplication] delegate]; 
[delegate.logViewNavController pushViewController:self.detailViewController animated:YES]; 

с этим:

[self.navigationController pushViewController:detailViewController animated:YES]; 

Если у вас есть контроллер панели вкладок, как вы говорите, то подталкивая detailViewController на delegate.logViewNavController, вероятно, неправильно, что нужно (в зависимости от того, что delegate.logViewNavController есть ..., но поскольку это не работает для вас, моя ставка заключается в том, что ваше замешательство).

В общем случае вам не нужно усложнять свой код доступом к делегату приложения для получения такого контроллера. Все, что вам нужно сделать, это нажать ваш новый контроллер на self.navigationController в большинстве практических случаев.

+0

Я заменил эти строки и теперь получаю эту «ошибку: запрос для члена logViewNavController» в чем-то, что не является структурой или объединением. Вот почему я звонил делегату. Еще идеи? Еще раз спасибо! – Trent

+0

Я забираю это. Я не правильно набрал ваш предложенный код, он работает сейчас! Большое спасибо! – Trent

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