2016-05-16 3 views
0

У меня есть два контроллера вида: LevelSelectViewController и GameViewController.pushViewController, который не является корневым viewController

Ни один из контроллеров корневого представления для приложения, которое я создаю (контроллер корневого представления называется MainViewController).

Как использовать метод навигации pushViewController: анимированный: для этого перехода для LevelSelectViewController в GameViewController?

В моей LevelSelectViewController, вы нажимаете на кнопку, и следующий метод действия выполняет:

- (IBAction)buttonPressed:(id)sender { 
     // the pushViewController:animated: method hopefully can be used 
     // other code 
    } 
+0

Как вы показали 'LevelSelectViewController'? – rmaddy

+0

presentViewController ... вот как я передвигался по всем кнопкам в своем приложении. Если я установлю контроллер корневого представления в качестве навигационного контроллера из AppDelegate, смогу ли я использовать другие контроллеры подзадачи в качестве навигационных контроллеров? – Frank

ответ

0

Как использовать метод навигации pushViewController:animated: для этого перехода для LevelSelectViewController в GameViewController?

Термин «вид корневой контроллер» может быть немного запутанным, потому что UIWindow имеет свойство rootViewController и UINavigationController имеет параметр initWithRootViewController. Если вы звоните -pushViewController:animated:, у вас должен быть контроллер навигации на вашем графике контроллера, так как этот метод принадлежит UINavigationController. Если LevelSelectViewController экземпляра является частью навигации стеки, вы можете сделать это:

- (IBAction)buttonPressed:(id)sender { 
    // create a game controller 
    GameViewController *gameController = [[GameViewController alloc] initWithNibName:nil bundle:nil]; 

    // push it 
    [self.navigationController pushViewController:gameController animated:YES]; 

    // other code 
} 

более типичным, что нужно сделать в эти дни, хотя, это поставить все контроллеры вида в раскадровке и просто подключить кнопку переходный переход.

+0

Я не знал, что если вы настроите свой контроллер корневого представления в качестве контроллера навигации в App Delegate, другие дочерние элементы этого контроллера представления смогут пользоваться той же функцией (без необходимости переопределять другие экземпляры контроллера навигации) .....благодаря! – Frank

0

Если вы используете раскадровки просто создать SEGUE. Если вы не передаете какую-либо информацию, вы можете нажать на нее, перетаскивая элемент управления с одного контроллера представления на другой. Не имеет значения, является ли это контроллером корневого представления или нет.

Если вы хотите передать данные, создайте segue на раскадровках с контроллера вида, а не на указательный путь или кнопку и т. Д. И вызовите метод prepareForSegueMethod в контроллере представления с тем же идентификатором, что и segue на раскадках.

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