如何隐藏具有多个窗口的应用程序上的按钮? - Objective C OSX

时间:2015-08-31 14:36:19

标签: objective-c macos cocoa window hide

我有一个应用程序,在第一个窗口上有一个按钮,按下此按钮应该隐藏并执行操作,隐藏我正在使用此代码的按钮:

[self.myButton setHidden:TRUE];

这个工作正常,直到我有多个窗口 - 此窗口的新实例没有此按钮,默认情况下它是隐藏的。但是,当我创建一个新窗口并在第一个窗口按myButton时,它不会隐藏按钮。

此外,如果我创建一个新窗口,然后关闭该窗口并在第一个也是现在唯一的窗口上按下myButton,它就会崩溃。

很明显,它似乎总是以创建的最后一个窗口为目标,如何使它始终以创建的第一个窗口为目标,或者实际发送动作的窗口?

只需通过从文档控制器调用newDocument来创建新窗口,如下所示:     [dc newDocument:self];

1 个答案:

答案 0 :(得分:0)

大多数按钮操作如下所示:

- (void)someAction:(NSButton* sender) {}

func someAction(sender : NSButton) {}

如您所见,发件人与该操作一起传递。现在这个发件人实际上是你按下的按钮。因此,您只需拨打sender.hidden = true;

即可隐藏此特定按钮

使用StoryboardsXibs添加操作时会自动添加发件人。 如果以编程方式添加操作,请在选择器(ObjC)或字符串(Swift)之后添加冒号。那么按钮实例应该传递给你。

... action:@selector(someAction:)...

... action:"someAction:" ...