无法从自定义视图调用的方法访问NSTextField

时间:2011-10-30 02:39:59

标签: objective-c cocoa interface-builder

几乎完成了编写图像编辑程序,但遇到了 应该有一个简单解决方案的问题。

基本上,我已经在主xib中构建了一组按钮和NSTextFields以及一个自定义视图,只需将它们直接从库中删除到默认窗口(当然,然后将它们与IBOutlets和IBActions链接起来) 。其中一个按钮是一个调用功能的“打开”按钮。该函数执行以下操作:它运行NSOpenPanel,然后更改一些NSTextField(用于更改图像名称和路径)。该代码的调用如下:

- (IBAction)openButtonPressed: (id)sender {
    [self runOpenPanel];
}

现在我也碰巧在自定义视图中运行我的keyDown处理程序,因为我告诉它接受FirstFirstResponder。 (我知道,不写一个单独的Controller类可能是不好的做法,但最好留一段时间。)所以我的keyDown事件看起来像这样(简化,就像我在实际代码中有if语句分别处理某些键一样)与此问题无关):

- (void)keyDown: (NSEvent *)theEvent {
    [self runOpenPanel];
}

所以他们都使用[self runOpenPanel],但来自不同的背景。我遇到的问题是“runOpenPanel”会调用一些来改变IBOutlets,如下所示:

-(void)runOpenPanel {
    // Omitting some of the trivial NSOpenPanel code
    [myTextField setStringValue: @"The file name NSString from the aforementioned omitted code."];
}

所以myTextField在Interface Builder按钮运行函数时更新,但在自定义视图的keyDown处理程序运行时则不会。 有没有办法调用runOpenPanel来允许它访问 myTextField?我尝试过使用[[super self] runOpenPanel](不要笑)和其他一些事情。提前谢谢!

0 个答案:

没有答案