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
如何在基于 NSDocument 的 Cocoa 应用程序中使用 NSViewController