Как программно вытащить ViewController (например, модальный)? - PullRequest
0 голосов
/ 10 марта 2020

Все:

Я делаю быстрый проект приложения Macos с какао с несколькими ViewController в одной раскадровке.

Я знаю, если я делаю переход и связываю переход от второго ViewController к первому ViewController .

Я могу открыть ViewController.

Но что, если у меня есть функция и я хочу вызвать другой ViewController для программного представления из первого ViewController?

Я ищу много примеры начинаются с UIStoryBoard, но мой раскадровка - NSStoryboard. Может ли кто-нибудь намекнуть немного, чтобы начать с?

мой код:

func checkPassword(SystemMsg:String) -> String{
        //print("x")
        let storyBoard = NSStoryboard(name: "Main", bundle: nil)
        let mainViewController : NSViewController = storyBoard.instantiateController(withIdentifier: "PasswordInput") as! NSViewController

        //self.present(mainViewController, asPopoverRelativeTo: <#T##NSRect#>, of: sender, preferredEdge: NSRectEdge, behavior: <#T##NSPopover.Behavior#>)

        return ""
    }

И мой viewController в раскадровке выглядит (без перехода, без ссылки):

введите описание изображения здесь

Если кто-то может помочь мне в этом шаг за шагом, будет признателен.

1 Ответ

0 голосов
/ 11 марта 2020

Я сам разбираюсь.

Самый простой способ состоит из 4 шагов:

  1. Определите ваш основной ViewController и второй ViewController в раскадровке
  2. Создайте свою главную ViewController с instantiateController
  3. Создайте свой второй ViewController с instantiateController
  4. , используйте presentAsModalWindow или presentAsSheet для представления secondController на главном ViewController

сначала нам нужно правильно определить раскадровку: *

Определите первую раскадровку, нам нужно щелкнуть верхний синий куб и назвать его в области идентификатора раскадровки

Определить вторую раскадровку, нам нужно нажать верхний синий куб и затем назовите его в области Storyboard Id

пример кода:

func checkPassword(SystemMsg:String) -> String{
        //print("x")
        //let storyBoard = NSStoryboard(name: "Main", bundle: nil)
        let mainViewController : NSViewController = self.storyboard?.instantiateController(withIdentifier: "MainController") as! NSViewController
        let passwordInputViewController : NSViewController = self.storyboard?.instantiateController(withIdentifier: "PasswordInput") as! NSViewController
        mainViewController.presentAsModalWindow(passwordInputViewController)

        //Or

        mainViewController.presentAsSheet(passwordInputViewController)

        return ""
    }

Если я что-то упустил, пожалуйста, поправьте меня аккуратно.

ссылка: Переход между просмотр контроллера, OS X

PS. если вы хотите передать значение между ViewController, это хорошая справка: https://learnappmaking.com/pass-data-between-view-controllers-swift-how-to/#back -properties

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