Я хочу открыть новый UIViewController на кнопке через код. Я уже сделал контроллер в раскадровке и просто хочу связать его, а также не хочу использовать интерфейс XIB или nibName?

14
Manu Gupta 12 Дек 2014 в 13:30
Ответ прямо здесь: stackoverflow .com/questions/25474115/…
 – 
Scott Zhu
12 Дек 2014 в 13:37
Как это реализовать, если у вашего контроллера просмотра нет раскадровки
 – 
Kartiikeya
9 Апр 2019 в 13:09

3 ответа

Лучший ответ

Чтобы открыть новый контроллер представления, вам нужно написать эту строку в событии нажатия кнопки:

self.performSegueWithIdentifier("GoToViewController", sender:self)

Чтобы подключиться к новому контроллеру представления, выполните следующие действия:

  • Выберите Новый контроллер представления из раскадровки и щелкните его правой кнопкой мыши.

  • Вы увидите, что появится всплывающее окно Dark Dray (см. Изображение).

  • Теперь в разделе Presenting Segues выберите Present Modally и перетащите к контроллеру представления, откуда вам нужно открыть этот контроллер представления и связать его.

  • Вы найдете новый сегмент, созданный в разделе Новый контроллер представления.

  • Теперь выберите этот переход, перейдите к инспектору и скопируйте идентификатор или переименуйте и скопируйте его.

  • Используйте этот идентификатор в строке выше

Надеюсь, это сработает.

enter image description here

20
Jojo56400 28 Ноя 2016 в 17:47
Отличное решение
 – 
Abhishek
28 Мар 2017 в 03:38
Если я открою новый контроллер представления по-вашему, будет ли предыдущий контроллер представления уничтожен из памяти? @cyberlobe
 – 
roy
14 Май 2017 в 08:43
Как это реализовать, если у вашего контроллера просмотра нет раскадровки
 – 
Kartiikeya
9 Апр 2019 в 12:51
self.navigationController!.pushViewController(self.storyboard!.instantiateViewControllerWithIdentifier("userProfileController") as UIViewController, animated: true)

Я хотел добавить свой контроллер представления к контроллеру навигации, и это тоже сработало.

14
Manu Gupta 12 Дек 2014 в 15:26
Как это реализовать, если у вашего контроллера просмотра нет раскадровки
 – 
Kartiikeya
9 Апр 2019 в 13:12

Для Swift 4.2 попробуйте следующий код:

self.navigationController!.pushViewController(self.storyboard!.instantiateViewController(withIdentifier: "inventoryViewController") as UIViewController, animated: true)
1
Siong Thye Goh 11 Май 2019 в 19:28