2016-08-16 4 views
2

Меня интересует segueing из файла xib (при нажатии кнопки), которая является одной ячейкой просмотра таблицы из табличного представления, в другой контроллер представления. Я не могу показать segue (через основную раскадровку), потому что они не на одной раскадровке. Мне было интересно, можно ли это сделать программно, и если да, то с каким кодом.Swift Segue Issue

Пожалуйста, дайте мне знать, если вам нужно больше деталей.

+2

От XIB тогда вы не можете, вы должны сделать это программно, его только если вы проектируете ячейку в раскадровке внутри этой Tableview, вам не нужно использовать XIB для разработки пользовательских клетка – Tj3n

ответ

1

Ваши варианты программно показывая контроллер представления являются следующие функции

Изнутри контроллера представления

  • presentViewController
  • dismissViewController

Изнутри контроллера представления на навигации стек

  • pushViewController
  • popToViewController
  • popToRootViewController
  • popViewController

, которые функционируют, чтобы использовать определяется контекстом, в котором появляется контроллер представления.

Для представления контроллеров представлений, если вы работаете с XIB и раскадными версиями, тогда обычный шаблон должен сначала создать контроллер представления из XIB или раскадровки, а затем представить его с помощью presentViewController.

Примером может служить

let vc = UIViewController(nibName: "NAME_OF_THE_NIB", bundle: NSBundle.mainBundle()) 
self.presentViewController(vc, animated: true) { 
    // Add completion code here. 
} 

С навигацией стеки можно использовать удобные функции для толкания и выскакивают контроллеры просмотра.

Чтобы быть понятным в отношении терминологии, ни один из этих методов не считается Segue. Этот термин применим только к перемещению между контроллерами представлений в раскадровке.

1

Если ваша ячейка и контроллер вашего вида находятся в разных раскадровках, вы можете (начиная с iOS 9) использовать между ними ссылки с помощью раскадровки.

См. Adding a Segue Between Two Storyboards.

Если ваша ячейка находится в своем собственном .xib, к сожалению, использование segue невозможно.

1

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

tableView.viewController // and then present/push