多个IBOutlet(从不同的类)到一个对象

时间:2013-08-26 17:36:27

标签: objective-c cocoa iboutlet

只是一个快速的语义问题,但是将多个IBOutlets放在不同的类中,在Interface Builder中转到一个(例如)NSButton是否可以。我问的原因是我需要根据不同类中发生的事件启用和禁用NSButton。多个IBOutlet是否可以,或者我应该为Button创建一个控制器类,它会收到一条消息,告诉它改变按钮的状态,导致只有一个IBOutlet?

提前致谢。


@Wain

MergeFilesController.h文件的相关代码:

@property (nonatomic, retain) IBOutlet NSButton *mergeFilesButton;

-(void)setMergeFilesButtonState:(BOOL)yn;

MergeFilesController.m文件的相关代码:

- (IBAction)mergeFiles:(id)sender {

   //Code goes here
}

- (void)setMergeFilesButtonState:(BOOL)yn {

    [mergeFilesButton setHidden:yn];
}

我有另一个类(称为DragDropController)来控制NSView的一些拖放功能。从DragDropController.m文件中,我希望能够根据DragDropController类中发生的一些内容更改mergeFilesButton的状态。

我来自DragDropController班级,我试图呼叫setMergeFilesButtonState

1 个答案:

答案 0 :(得分:0)

您应该使用控制器类。视图类应该用于显示和托管控件。控件应将交互详细信息传递给控制器​​。控制器应该控制所有视图。


DragDropController应该是通用的,而不是专门了解其他控制器。相反,它应该发布通知,因为它的状态发生了变化,其他控制器可以观察通知,以确定何时应该对UI进行更新。

相关问题