PushviewController не работает при вызове из подпредставления - PullRequest
1 голос
/ 14 февраля 2012

Я создаю приложение для iPhone со следующей структурой: У меня есть MainViewController , который состоит из 2 представлений (например, разделенный экран). первый вид из них, имеет кнопку. При касании UItableView ( ResultTableViewController ) появляется в секунде (из вышеупомянутого) представления:

-(IBAction)buttonTapped:(id)sender {
  if ([(UIButton *)sender tag] == 0) {
      ResultsTableViewController *childViewController = [[ResultsTableViewController alloc] init];
      childViewController.tableView.delegate = self.results;        
      [self.results.view addSubview:childViewController.tableView];
    }
}

Итак, у меня есть UItableView как подвид UIView.

Проблема в том, что pushViewController () в didSelectRowAtIndexPath () ResultTableViewController не работает (self.navigationController равен nil).

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    DetailsViewController *detailView = [[DetailsViewController alloc] initWithNibName:@"DetailsViewController" bundle:[NSBundle mainBundle]];    
    [self.navigationController pushViewController:self.detailView animated:YES];
}

Я перепробовал многие решения, которые нашел, но ничего не работает.

В моем MainWindow.xib я только добавил MainViewController, это проблема?

Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 14 февраля 2012
[self.navigationController pushViewController:self.detailView animated:YES]; 

над строкой кода приведет к подробному просмотру стека навигационных контроллеров. Проверьте, находится ли ваш контроллер таблицы в этом стеке?

0 голосов
/ 16 февраля 2012

Хорошо, я нашел это.Мне пришлось объявить мой MainViewController как UINavigationControllerDelegate и создать в нем вторичный NavigationController.Я нажимаю viewController в моем новом навигационном контроллере и все.

0 голосов
/ 14 февраля 2012

Вы добавляете представление дочернего контроллера в представление вашего контроллера, а не помещаете дочерний контроллер в свой стек навигации.Из-за этого, навигационный контроллер вашего дочернего контроллера будет nil, поскольку он не был вставлен в навигационный контроллер.

Это то, что вы собираетесь?

...