【问题标题】:Changing properties of container view更改容器视图的属性
【发布时间】:2014-07-04 15:24:17
【问题描述】:

我有一个带有 3 个选项卡的 tabView,每个 tabViewItems 都包含一个 webView。我想将每个选项卡的标题设置为每个 webView 正在呈现的 HTML 页面的 document.title

所以基本上,每个NSTabViewItem 都有一个Webview,通过[tabViewItem setView:webView];。 现在,在 webviews 的 didFinishLoadForFrame 代表上,我可以通过执行 NSString *title = [sender stringByEvaluatingJavaScriptFromString:@"document.title"] 来检索 HTML 页面的标题。我只能访问sender 对象,所以我的问题是如何获得NSTabViewItem 包含 我的发件人。换句话说,我应该在< >s 里面放什么

[<getNSTabViewItemFromSender:sender> setLabel:title]

【问题讨论】:

    标签: xcode macos cocoa tabview nstabview


    【解决方案1】:

    您可以通过sending it -superview 获取任何 NSView 的父级。

    【讨论】:

    • 其实这里不完全是父视图,因为:1)我做了一个[tabViewItem setView:webView] 所以tabViewItem 不是我的 webview 的超级视图,2)超级视图返回一个 NSView 对象和我想要的是一个 NSTabViewItem。
    【解决方案2】:

    由于您的 Web 视图对象已设置为选项卡的视图,因此您可以找到正在使用您的特定 Web 视图的选项卡项。

    您可以将其实现为NSTabView 上的一个类别(类似这样)...

    - (NSTabViewItem*)tabViewItemWithView:(NSView*)view {
        for (NSTabViewItem *item in [self tabViewItems]) {
            if (item.view == view) {
                return item;
            }
        }
        return nil;
    }
    

    然后,您可以为包含您的 Web 视图的选项卡项设置标签。

    [[tabView tabViewItemWithView:webView] setLabel:label];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-31
      • 2017-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多