Swift 4 передачи данных из NSViewController в NSTabViewController - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть контроллер NSView с именем LOGIN

У меня есть NSTabViewController с именем LISTS, и у него есть две вкладки: playlistLists - связанные с классом PlaylistLists, альбомы - связанные с классом Albums

Iнужно передать переменную из логина в playlistLists, и я думаю, что-то вроде этого должно работать (это из другого поста), но это для ios, и мне нужно это для macOS

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let barViewControllers = segue.destination as! UITabBarController
    let destinationViewController = barViewControllers.viewControllers?[0] as! FirstViewController
    destinationViewController.test = "Hello TabBar 1"

    // access the second tab bar
    let secondDes = barViewControllers.viewControllers?[1] as! SecondViewController
    secondDes.test = "Hello TabBar 2" }

, поэтому я изменяю это на это:

override func prepare(for segue: NSStoryboardSegue, sender: Any?) {
    let barViewControllers = segue.destinationControlles as! NSTabViewController
    let destinationViewController = barViewControllers.viewControllers?[0] as! playlistLists
    destinationViewController.test = "Hello TabBar 1"

    // access the second tab bar
    let secondDes = barViewControllers.viewControllers?[1] as! SecondViewController
    secondDes.test = "Hello TabBar 2"  }

В этой строке я не могу понять, как изменить ее для macOS:

    let destinationViewController = barViewControllers.viewControllers?[0] as! playlistListsts

или, возможно, это неправильный способ сделать это.

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 11 февраля 2019

Когда вы используете as! для приведения из одного типа в другой, вы должны указать класс (или структуру) тип , а не переменную или свойство name .Так что если playlistsLists является свойством типа PlaylistLists, то ваша строка должна быть

let destinationViewController = barViewControllers.viewControllers?[0] as! PlaylistList
...