【问题标题】:How to pass value from NSTabViewController to child view?如何将值从 NSTabViewController 传递给子视图?
【发布时间】:2014-10-27 18:44:58
【问题描述】:

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

【问题讨论】:

    标签: xcode macos cocoa xcode-storyboard


    【解决方案1】:

    在情节提要的“文档大纲”窗格(左侧列出视图、对象等的可折叠窗格)中,选项卡视图控制器下将有两个标记为“选项卡视图项”的对象。给他们每个人一个标识符。 (在下面的示例中,它们是“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
    
        }
    
    }
    

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

    上周我不得不这样做,这让我发疯了!

    【讨论】:

    • 换句话说,我必须继承 Tab View 并添加一些额外的代码?
    • 不是tabView,而是TabViewController,不一样。 tabView 是 TabViewController 的子项。关键是你通过 TabViewController 的 tabViewItems 访问视图控制器。使用这些,您可以在视图控制器上设置任何变量。
    • 这仅适用于加载选项卡视图控制器时加载的项目。从文献中
    • 标签视图控制器延迟加载与每个子视图控制器关联的视图,只有在选择了相应的标签后才创建它们。首次显示选项卡视图控制器的视图时,只加载最初选择的选项卡的视图。 --- 也许最好在应该加载项目的 tabItem(:didSelect) 中做这些事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多