xcode - 无法更改工作表上的文本标签

标签 xcode cocoa nstextfield cocoa-sheet

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

Nib 正确加载、打开和关闭,但静态文本标签永远不会更新。连接的 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];

有什么想法吗?

* 编辑*

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

最佳答案

嗯,我的怀疑是正确的......事情很简单。

我只需重绘窗口:

[mySheet display];

哦! :)

关于xcode - 无法更改工作表上的文本标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11006152/

相关文章:

Objective-C:这个委托(delegate)在哪里声明,以及其他查询

macos - 在 NSBitmapImageRep 上绘图

cocoa - 类似于 OS X 10.10 的 __IPHONE_8_0

cocoa - 截断标签的开头

cocoa - NSTextField 清除按钮

ios - 如何获取用户的时区?

ios - Xcode - 宽度和水平位置不明确

ios - 在 SpriteKit 游戏中制作 Facebook 帖子

objective-c - 在 Objective C (Cocoa) 中设置环境变量的惯用方法是什么

cocoa - NSTextfield 立即验证在哪里?