Objective c 跨类访问NSApplicationLegate方法
在Objective c 跨类访问NSApplicationLegate方法,objective-c,macos,cocoa,Objective C,Macos,Cocoa,在applicationelegate.h中,我有: @interface appDelegate : NSObject <NSApplicationDelegate> - (IBAction)showPage:(id)sender; 我想用如下按钮触发该功能: - (IBAction) clickAction:(id)sender { [showPage:nil]; NSLog(@"Clicked and the page is shown"); } 跨类访问show
applicationelegate.h
中,我有:
@interface appDelegate : NSObject <NSApplicationDelegate>
- (IBAction)showPage:(id)sender;
我想用如下按钮触发该功能:
- (IBAction) clickAction:(id)sender {
[showPage:nil];
NSLog(@"Clicked and the page is shown");
}
跨类访问
showPage
函数的正确方法是什么?从当前应用程序获取委托,然后对其调用方法
[(appDelegate*)(NSApplication.sharedApplication.delegate) showPage:nil];
从当前应用程序获取委托,然后对其调用方法
[(appDelegate*)(NSApplication.sharedApplication.delegate) showPage:nil];
不要硬链接行动,只需将行动发送给第一响应者 这是一个占位符对象,在运行时将解析为第一个响应者(输入字段、视图等),并通过搜索链向上搜索,直到最终请求应用程序代理响应消息 了解操作系统X中的事件处理基础知识:
不要将动作硬链接,只需将动作发送给第一响应者即可 这是一个占位符对象,在运行时将解析为第一个响应者(输入字段、视图等),并通过搜索链向上搜索,直到最终请求应用程序代理响应消息 了解操作系统X中的事件处理基础知识:
不,这不是代理存在的原因<代码>NSApplicationLegate的存在是为了对系统事件做出反应,而不是作为单例使用。@vikingosegundo-足够公平。我想我应该说的是,对于委托人来说,这是一个非常常见的用例,不管它是否打算这样使用。不,这不是委托人存在的原因<代码>NSApplicationLegate的存在是为了对系统事件做出反应,而不是作为单例使用。@vikingosegundo-足够公平。我想我应该说的是,对于委托人来说,这是一个非常常见的用例,不管它是否打算这样使用。