【问题标题】:Can't change Text Label on Sheet无法更改工作表上的文本标签
【发布时间】:2012-06-12 23:11:55
【问题描述】:

我创建了一个工作表,我想在程序进行数据处理时显示各种消息。工作表可以正确打开和关闭,并且工作表上有一个文本标签,它通过 IB 插座连接到我的主控制器(工作表的所有者)。

笔尖正确加载、正确打开和关闭,但静态文本标签永远不会更新。连接的 IBOutlet 是这样定义的:

IBOutlet id mySheetText;

我用来尝试修改工作表上的文本的调用是这样的:

[mySheetText setStringValue:@"Some text message..."];

如果标签在主窗口中,这种格式可以正常工作,但如果标签在工作表上,则不执行任何操作。

IB 中的所有连接似乎都是正确的。我确定我遗漏了一些非常简单的东西,我猜这与工作表是与主窗口不同的“窗口”这一事实有关,但我似乎找不到任何东西在文档中为我指明正确的方向。

顺便说一下,这是我连接工作表的方式...

NSWindow *mySheet;

@property (assign) IBOutlet NSWindow *mySheet;
@synthesize mySheet;

...然后打开它:

if (!serverSyncSheet) {
    [NSBundle loadNibNamed:@"mySheetNibFile" owner:self];
}

[NSApp beginSheet: self.mySheet
   modalForWindow: [[NSApp delegate] mainWindow]
    modalDelegate: self
   didEndSelector: NULL
          contextInfo: NULL];

有什么想法吗?

* 编辑 *

好的,事实证明我是部分正确的。如果我尝试读取文本值,事实证明它正在将其设置为正确的文本,但工作表并未更新以显示更改。我怀疑我需要告诉窗口重绘......以前从未这样做过。回到文档,看看我能不能找到它。如果有人知道调用方法,请告诉我。 :) 谢谢!

【问题讨论】:

    标签: xcode cocoa nstextfield cocoa-sheet


    【解决方案1】:

    嗯,我的猜想是正确的……这很简单。

    我只需要重新绘制窗口:

    [mySheet display];
    

    哇! :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-21
      • 2012-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      相关资源
      最近更新 更多