2015-11-24 4 views
1

Я просто хочу знать, как переходить к новому контроллеру представления в новой раскадровке, без необходимости программировать новый контроллер представления.Как программировать Segue для нового ViewController в новой раскадровке

Сценарий: У меня есть один контроллер представления, которая создается полностью в коде, и система думает, что я нахожусь в раскадровки А. Я хочу непосредственно перейти от этого вида контроллера на другой контроллер представления, содержащийся на раскадровки В.

  1. Я мог бы создать segue, прикрепленный к справочной системе раскадровки (что является большим предложением), если этот контроллер представления был создан с помощью раскадровки. Но это код, поэтому я не могу этого сделать.
  2. Моим другим вариантом является сделать, чтобы следующий контроллер представления полностью был создан в коде, чтобы я мог представить его, не используя segues. Это боль, но она будет работать.
  3. Мой третий вариант - инициализировать новую раскадровку в коде, инициализировать новый контроллер представления в коде с помощью идентификатора раскадровки, а затем использовать навигационный контроллер, чтобы перейти к нему.

Если есть другие варианты, я не знаю, пожалуйста, включите их ниже!

ответ

3

Этот фрагмент кода позволяет вам переходить на любой viewController в любом месте приложения, сохраняя возможность создавать свой viewController с раскадрой.

func settingsButtonPressed(sender:UIButton) { 
    let storyboard = UIStoryboard(name: "AccountLinking", bundle: nil) 
    let linkingVC = storyboard.instantiateViewControllerWithIdentifier("AccountLinkingTable") 
    self.navigationController?.pushViewController(linkingVC, animated: true) 
} 

Так много часов было спасено благодаря этой небольшой функции.

+0

Когда вы вызываете 'instantiateViewControllerWithIdentifier', не так ли программно создается viewController? – dudeman

+0

Я должен отредактировать свое заявление, чтобы сказать, что вы можете создавать свои контроллеры представлений в раскадровке. Да, он создает их программно. –

+0

Согласовано. Выглядит неплохо. +1. – dudeman

0

Вы можете переопределить функцию ниже, чтобы переопределить вызов segue.

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

    var destinationController = segue.destinationViewController 

} 
1

Я хотел бы призвать кого-нибудь читает это, чтобы взглянуть на Storyboard Reference введенном в Xcode 7 для достижения этой цели вместо загрузки раскадровки программно.

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