如何将值从NSTabViewController传递到子视图?

时间:2014-10-27 18:44:59

标签: xcode macos cocoa xcode-storyboard

我想在我的Mac桌面应用程序中有标签菜单,每个标签将显示progresbarr(从互联网加载内容),然后加载数据。我想在每个页面中使用相同的LoadingViewController,并且只传递应下载的数据(根据用户选择的选项卡)。我如何将信息从NSTabViewController传递给子ViewController? 这就是我的故事板的样子:

StoryBoard

1 个答案:

答案 0 :(得分:1)

在故事板"文档大纲"窗格(左侧可折叠的窗格,列出视图,对象等),在选项卡视图控制器下将有两个标记为" Tab View Item"的对象。给每个人一个标识符。 (在下面的例子中,它们是" entriesTabItem"和" contactsTabItem"。

然后,子类TabViewController,并在该子类中,在" viewDidLoad"中添加如下内容:

override func viewDidLoad() {
    super.viewDidLoad()

    var entryIndex = self.tabView.indexOfTabViewItemWithIdentifier("entriesTabItem")
    var entriesTVItem:NSTabViewItem = self.tabViewItems[entryIndex] as NSTabViewItem
    var entriesVC:EntryViewController? = entriesTVItem.viewController as EntryViewController?
    if (entriesVC != nil){
    entriesVC!.topTabView = self.tabView
        entriesVC!.topTabVC = self

    }

    var contactIndex = self.tabView.indexOfTabViewItemWithIdentifier("contactsTabItem")
    var contactTVItem:NSTabViewItem = self.tabViewItems[contactIndex] as NSTabViewItem
    var contactVC:ContactsViewController? = contactTVItem.viewController as ContactsViewController?
    if(contactVC != nil) {
        contactVC!.topTabView = self.tabView
        contactVC!.topTabVC = self

    }

}

在上面的代码中,视图控制器可以是同一个类,而不是它们在这里的不同,你可以传递你想要的任何变量。

我上周必须这样做,这让我抓狂!