You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 15:12:02