【问题标题】:How to change title of NSPanel at runtime?如何在运行时更改 NSPanel 的标题?
【发布时间】:2011-09-30 02:04:52
【问题描述】:

也许我在这里遗漏了一些非常简单的东西(我希望如此),但是在运行时更改 NSPanel 的标题有技巧吗?明显的 [panel setTitle:@"New title"] 似乎不起作用。

我正在尝试显示一个包含 WebView 的常规面板,并且我希望面板的标题能够反映 HTML 内容的标题。

我继承了 NSWindowController 并调用了 initWithWindowNibName。我将笔尖中的类从 NSWindow 更改为 NSPanel,一切似乎都正常。在我的窗口控制器中,我这样做了:

- (void)windowDidLoad {
    [super windowDidLoad];
    [[self window] setTitle:@"My New Title"];
}

(我实际上将在 webView:didReceiveTitle:forFrame 委托中设置标题,但这更容易显示)。

我确认代码正在被调用,并且没有报告错误,但标题从未改变。有什么想法吗?

【问题讨论】:

    标签: objective-c cocoa


    【解决方案1】:

    在包含面板的 nib 文件中,确保 File's Owner 的类已设置为您的 NSWindowController 子类,并且 File's Owner 的 window 出口已连接到面板。否则,窗口控制器将不知道它应该管理哪个窗口并且[self window] 返回nil

    【讨论】:

      【解决方案2】:

      您正在设置标题,但您并没有告诉窗口再次显示自己。

      【讨论】:

      • 没有必要做任何这样的事情。只需向窗口发送setTitle: 消息就足以更改其标题。我使用 NSWindow 和 NSPanel 对此进行了测试。
      猜你喜欢
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多