我有一个应用程序,在第一个窗口上有一个按钮,按下此按钮应该隐藏并执行操作,隐藏我正在使用此代码的按钮:
[self.myButton setHidden:TRUE];
这个工作正常,直到我有多个窗口 - 此窗口的新实例没有此按钮,默认情况下它是隐藏的。但是,当我创建一个新窗口并在第一个窗口按myButton时,它不会隐藏按钮。
此外,如果我创建一个新窗口,然后关闭该窗口并在第一个也是现在唯一的窗口上按下myButton,它就会崩溃。
很明显,它似乎总是以创建的最后一个窗口为目标,如何使它始终以创建的第一个窗口为目标,或者实际发送动作的窗口?
只需通过从文档控制器调用newDocument来创建新窗口,如下所示: [dc newDocument:self];
答案 0 :(得分:0)
大多数按钮操作如下所示:
- (void)someAction:(NSButton* sender) {}
或
func someAction(sender : NSButton) {}
如您所见,发件人与该操作一起传递。现在这个发件人实际上是你按下的按钮。因此,您只需拨打sender.hidden = true;
使用Storyboards
或Xibs
添加操作时会自动添加发件人。
如果以编程方式添加操作,请在选择器(ObjC)或字符串(Swift)之后添加冒号。那么按钮实例应该传递给你。
... action:@selector(someAction:)...
或
... action:"someAction:" ...