Xamarin.Mac中点击窗口红色关闭按钮前执行操作的实现方法
OC 实现窗口关闭前触发回调方案
步骤1:让主控制器遵守NSWindowDelegate协议
在你的主NSViewController头文件中,声明遵守窗口代理协议:
#import <Cocoa/Cocoa.h> @interface MainViewController : NSViewController <NSWindowDelegate> @end
步骤2:设置窗口代理
在主控制器的viewDidLoad方法中,将自身设置为窗口的代理,确保能接收到窗口关闭的回调:
- (void)viewDidLoad { [super viewDidLoad]; // 绑定窗口代理到当前控制器 self.view.window.delegate = self; }
步骤3:实现关闭前的回调方法
实现NSWindowDelegate中的windowShouldClose:方法,这个方法会在用户点击红色关闭按钮、窗口即将关闭时触发。你可以在这里处理操作结果展示逻辑:
- (BOOL)windowShouldClose:(id)sender { // 这里添加你的操作结果展示逻辑,比如弹出提示框 NSAlert *resultAlert = [[NSAlert alloc] init]; resultAlert.messageText = @"操作结果"; resultAlert.informativeText = @"你的所有操作已完成,最终结果:XXX"; [resultAlert runModal]; // 返回YES允许窗口关闭,返回NO则阻止窗口关闭(可根据业务逻辑调整) return YES; }
额外说明
如果你的主控制器是通过Storyboard加载的,也可以直接在Storyboard编辑器中,将窗口的delegate拖拽关联到主NSViewController,代替代码设置代理的步骤。
内容的提问来源于stack exchange,提问作者alexwhyhey
相关产品推荐
相关产品推荐

