使用NSViewController加载nib之后...如何访问nib中的NSButton?

问题描述:

我已经将NSViewController与IBOutlets绑定到一个辅助笔尖中的NSButton中。使用NSViewController加载nib之后...如何访问nib中的NSButton?

我可以实例化NSViewController并在NSMenu中应用视图 - 它工作的很好 - 但是如何访问按钮来更改其标题?

由于NSViewController具有IBOutlets,我假设我会通过控制器执行此操作。

//this part works great 
NSViewController *viewController = [[toDoViewController alloc] initWithNibName:@"toDoView" bundle:nil]; 
NSView *newView = [viewController view]; 
newMenuItem.view = newView; 

//this part not so much 
[viewController [toDoButton setTitle:someStringHere]]; 

任何指向哪里可以从这里?

编辑补充:在toDoViewController类 -

@interface toDoViewController : NSViewController { 
    IBOutlet NSButton *checkBoxButton; 
    IBOutlet NSButton *toDoButton; 
} 

@end 

[viewController [toDoButton setTitle:someStringHere]]; 

随着互动小说口译员会说,

你“这似乎是缺少一个动词。”有一个接收器(viewController)和一个完整的消息表达式([toDoButton setTitle:…])和括号,但是你缺少一个选择器。因此,这不是一个有效的消息表达。

有两种可能性:

  1. 你的意思是将消息发送到视图控制器,传球setTitle:结果作为它的参数,你忘了选择。我觉得这不太可能,因为NSButton的setTitle:不会返回任何内容。
  2. 您的意思是从视图控制器获取按钮,然后发送按钮一个setTitle:消息。假设此视图控制器是您添加了toDoButton属性的NSViewController的子类实例,请使用[[viewController toDoButton] setTitle:someStringHere][viewController.toDoButton setTitle:someStringHere]
+0

对我有意义,但当我尝试代码时,我得到:“ - [toDoViewController toDoButton]:无法识别的选择器发送到实例”...由于某种原因,viewController(toDoViewController的实例)不能识别它有权访问toDoButton。 – iconmaster 2009-11-27 17:41:47

+0

正如我所说的,您需要将该视图控制器作为您已添加'toDoButton'属性的子类的实例。 – 2009-11-27 18:49:58

+0

上面编辑添加我的toDoViewController子类定义。 toDoButton被定义为一个IBOutlet,它连接到IB中的视图控制器。我错过了一步吗? – iconmaster 2009-11-28 00:00:20