【问题标题】:Text on label not set when window appears出现窗口时未设置标签上的文本
【发布时间】:2013-10-29 20:14:10
【问题描述】:

我用自定义的 MyWindow.xibMyWindowController 制作了一个小型 Cocoa 应用程序。该窗口包含一个 NSTextField(标签),并且从我的 AppDelegate 我正在初始化这个控制器和它的视图,在标签上设置一个文本并显示窗口:

self.controller =[[MyWindowController alloc] initWithWindowNibName:@"MyWindow"];
[self.controller setText:@"My text"];
[self.controller showWindow:self];

但当窗口出现时,仍会显示默认的“标签”文本。为什么?

我的示例项目可以在这里下载:http://s000.tinyupload.com/?file_id=00611347759347594342

【问题讨论】:

    标签: objective-c cocoa nsview nswindow nswindowcontroller


    【解决方案1】:

    这里的问题是您的标签实际上还不是可视的,因此更改文本没有任何作用。解决此问题的一种方法是在控制器中拥有一个字符串属性并设置它:

    self.controller.textForLabel = @"My text";
    

    然后在你的viewWillAppear:你的控制器的.m中你可以设置文本:

    [self setText:self.textForLabel];
    

    【讨论】:

      【解决方案2】:

      在您的项目中,您在显示窗口之前更改文本,这是在初始化之前完成的。只需切换这个:

      [self.controller setText:@"My text"];
      [self.controller showWindow:self];
      

      [self.controller showWindow:self];
      [self.controller setText:@"My text"];
      

      【讨论】:

        【解决方案3】:

        两种解决方法: 替换两行代码,显示窗口后设置文本,应该是这样的:

        [self.controller showWindow:self];
        [self.controller setText:@"My text"];
        

        另一种方法是在“-(void)windowDidLoad”函数内更改 MyWindowController.m 文件中的标签文本。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-11-14
          • 2016-04-29
          • 1970-01-01
          • 2017-07-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多