Cocoa:NSViewController 视图中的设置器

Posted

技术标签:

【中文标题】Cocoa:NSViewController 视图中的设置器【英文标题】:Cocoa: setters in an NSViewController view 【发布时间】:2011-12-24 23:50:49 【问题描述】:

我正在使用一个带有单个视图的 NSViewController 类来显示进度指示器栏和一些文本字段。我正在尝试使用progressIndicator setMaxValue:theTextField setStringValue:,但它们都没有做任何事情。

我以前做过这个,我检查了又重新检查,它相当简单,它不起作用的事实让我认为它与类是 NSViewController 的事实有关。这就是我尝试的原因

Timers *aTimer = [[Timers alloc] init];
[aTimer.timerNameLabel setStringValue:@"name"];
[aTimer.progressIndicator setMaxValue:x];

在作为 NSObject 类的应用程序委托中,但这也不起作用。

我尝试查看 NSViewController 文档,但找不到任何说明它无法设置这些值的内容,所以我不知道发生了什么。我做错了什么?

【问题讨论】:

【参考方案1】:

您可能希望使用-initWithNibName:bundle: 而不是常规的init 来初始化您的自定义笔尖。

编辑:问题似乎是由于在获取其他对象之前未查询视图。通过调用[myController view],您实际上加载了笔尖,这在您初始化视图控制器时不会自动完成。所以在你可以使用视图的任何元素之前,你需要调用[myController view]

【讨论】:

@Elbimio 你检查过标签和进度指示器不为零吗? 标签好像是(null) @Elbimio 好的,您是否将 nib 文件中文件所有者的类设置为“计时器”?您是否将这两个对象作为 IBOutlets 引用给您的文件所有者? @Elbimio 现在我在我的 iPod 上,我无法测试它,但我记得我必须先打电话给[myController view],然后才能使用视图。然后这将调用视图的实际加载,初始化方法不会自动执行此操作。所以尝试在初始化后立即查询视图。

以上是关于Cocoa:NSViewController 视图中的设置器的主要内容,如果未能解决你的问题,请参考以下文章

Cocoa:使用 nib 加载 NSViewController

跨 Cocoa 应用程序共享数据

如何在基于 NSDocument 的 Cocoa 应用程序中使用 NSViewController

在基于文档的 Cocoa 应用程序中避免耦合?

Cocoa - 在情节提要中以编程方式呈现 NSViewController LIKE “显示选项”(不是模态)

Cocoa 自动布局和调整子视图的大小