Добавление контроллера навигации в приложение панели вкладок (программно) - PullRequest
2 голосов
/ 30 марта 2012

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

У меня есть приложение панели вкладок с четырьмя вкладками.Каждая вкладка передает управление соответствующему ViewController, где некоторые из них инициализируются с помощью файла .XIB, а некоторые - только программно.Одним из программных является DirectionsViewController, что по сути является UITableViewController.Выбор ячейки из ее таблицы должен представлять (модально) DetailedDirectionsViewController, который должен иметь какую-то обратную ссылку на контроллер представления представления.Я подумал, что самый простой способ сделать это - добавить контроллер навигации к Directions и DetailedDirections VC, за исключением того, что я не знаю, как это сделать без файла .XIB.

Кроме того,способ передать управление на DetailedDirections, изменив Directions следующим образом:

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    DetailedDirectionsViewController *vc = [[DetailedDirectionsViewController alloc] initWithStyle:UITableViewStyleGrouped];
    [self.tabBarController presentModalViewController:vc animated:YES];
}

Кажется, я вспомнил, как один из моих профессоров сказал, что presentModalViewController - это старый метод, илучшие альтернативы ... я просто не могу вспомнить их прямо сейчас.

Ответы [ 2 ]

1 голос
/ 30 марта 2012

Для того, что вы хотите сделать, было бы лучше, чтобы вкладка на панели вкладок управляла UINavigationController, и установила rootViewController этого контроллера навигации в DirectionsViewController.

Затем в вашем направленииdidSelectRowAtIndexPath: методы контроллера, вы можете сделать следующее:

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    DetailedDirectionsViewController *vc = [[DetailedDirectionsViewController alloc] initWithStyle:UITableViewStyleGrouped];
    [self.navigationController pushViewController:vc animated:YES];
}

И он будет работать так, как вы хотите.Контроллер UINavigation позаботится о том, чтобы на вашем детализированном контроллере направления отображалась кнопка возврата.

0 голосов
/ 31 марта 2012

Если я правильно понял, в табличном представлении: didSelectRow ..: вам просто нужно создать контроллер навигации, инициализирующий его контроллером представления, который вы хотите отобразить модально, прежде чем представлять его, создайте UIBarButtonItem и добавьте его на панель навигации.контроллера навигации в качестве селектора создайте новый метод с командой dismiss внутри.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...