Там должна быть простым решением этой проблемы, но после 4 часов просмотра StackExchange, я сдаюсь и пытается получить это ответило здесь:Segue стрельба, но не толкая/UITabBarController/UITableViewController когда клетка щелкнула
ситуации : IOS 5, Xcode 4.2.1, с помощью раскадровки
Установка:
- Root Навигационный контроллер = UITabBarController 5 элементов
- Каждая вкладка связана с U ITableViewController (через перетекает), который прекрасно работает, автоматически
- У меня есть классы для каждого контроллера представления и контроллера навигации (UITabBarController)
- я нажимаю на вкладке, скажем, «Программа», и он показывает мне список пунктов (в связанном UITableViewController), скажем, один из этих элементов - «Сессии»
- Я нажимаю «Сеансы», didSelectRowAtIndexPath вызывается просто отлично.
- Я хочу, чтобы выполнить SEGUE сейчас (который я связан с этой UITableViewController, а не клетки, к новому UITableViewController и дал ему идентификатор
я называю:.
[self performSegueWithIdentifier:@"programToSessions" sender:self];
prepareForSegue вызывается , но ничего потом. Нет ошибки, никаких предупреждений. Новый UITableViewController не отображается.
- Примечание: оно появляется, однако, если я переключу segue на «модальный», но он отбрасывает/скрывает оригинальная панель вкладок внизу внизу (не предназначена ...)
До сих пор у моей проблемы, похоже, было вероятное решение. Контроллер навигации. Я предположил, что если я настрою ссылку на диспетчер навигации в AppDelegate, инициирует/устанавливает его, как только загружается фактический контроллер навигационной системы (в viewDidLoad), т. Е. В основном использует что-то по строкам: app.navController = self.navigationController
в viewDidLoad - это может сработать! Правильно? Итак, я изменил действие по сцелу на: [app.navController performSegueWithIdentifier:@"programToSessions" sender:self];
Однако ничего не меняется, оно не появляется.
Любые идеи?
Решено:
Существовали несколько вопросов здесь. Основная проблема заключалась в том, что я пропустил «навигационный контроллер» между UITabBarController и UITableViewController. Это можно сделать, добавив новый «навигационный контроллер» в раскадровку, затем перетащите из UITabBarController (rootViewController) в этот новый контроллер и установите RELATIONSHIP. Затем перетащите RELATIONHIP в UITableViewController. Так, как это изложено правильный ответ он должен выглядеть следующим образом: UITabBarController -> (отношения) -> UINavigationController -> (отношения) -> UITableViewController
Для того, чтобы загрузить новые UITableViewControllers поверх последнего UITableViewController, простой segue и вызов его через код будет достаточно.Конечное дерево будет выглядеть следующим образом:
UITabBarController -> (отношения) -> UINavigationController -> (отношения) -> UITableViewController -> (переход) -> UITableViewController
Дайте SEGUE ап идентификатор. В коде, используйте:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self performSegueWithIdentifier:@"loadMyDetailView" sender:self];
}
Ваше решение работал для меня. Вы должны опубликовать его в качестве ответа, чтобы люди могли проголосовать за него –