Создание перехода программно - PullRequest
200 голосов
/ 13 марта 2012

У меня есть общий UIViewController, который распространяется на все мои UIViewsControllers для повторного использования некоторых общих операций.

Я хочу настроить переход на этот "Общий" UIViewController, чтобы все остальные UIViewControllers наследуют.

Я пытаюсь выяснить, как мне сделать это программно.

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

Ответы [ 13 ]

1 голос
/ 19 февраля 2014

Я выполнил обратный инжиниринг и реализовал реализацию сегментов UIStoryboard с открытым исходным кодом: https://github.com/acoomans/Segway

С помощью этой библиотеки вы можете определять сегменты программно (без раскадровки).

Надеюсь, что это может помочь.

0 голосов
/ 02 июля 2017

Вот пример кода для Creating a segue programmatically:

class ViewController: UIViewController {
    ...
    // 1. Define the Segue
    private var commonSegue: UIStoryboardSegue!
    ...
    override func viewDidLoad() {
        ...
        // 2. Initialize the Segue
        self.commonSegue = UIStoryboardSegue(identifier: "CommonSegue", source: ..., destination: ...) {
            self.commonSegue.source.showDetailViewController(self.commonSegue.destination, sender: self)
        }
        ...
    }
    ...
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // 4. Prepare to perform the Segue
        if self.commonSegue == segue {
            ...
        }
        ...
    }
    ...
    func actionFunction() {
        // 3. Perform the Segue
        self.prepare(for: self.commonSegue, sender: self)
        self.commonSegue.perform()
    }
    ...
}
0 голосов
/ 31 октября 2013

Пара проблем, на самом деле:

Во-первых, в этом проекте, который вы загрузили для нас, segue не несет идентификатора "segue1":

без идентификатора

Вы должны заполнить этот идентификатор, если вы этого еще не сделали.

Во-вторых, когда вы переходите от представления таблицы к представлению таблицы, вы вызываете initWithNibName для создания контроллера представления.Вы действительно хотите использовать instantiateViewControllerWithIdentifier.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...