在Cocoa App中展示自定义的对话框

本文介绍了如何在Cocoa App中展示自定义对话框,特别是在点击工具栏item时弹出对话框的问题。作者遇到对话框不从App顶部滑下,而是直接在屏幕中央显示的问题。通过查看官方文档和解决一个关于nib文件'visible at launch'选项的gotcha,成功解决了这个问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继上一篇Toolbar的使用,我想在点击工具栏item的时候,下拉一个对话框。

官方文档见此:点击打开链接

通过创建alert:

NSAlert *alert = [[[NSAlert alloc] init] autorelease];
[alert addButtonWithTitle:@"OK"];
[alert addButtonWithTitle:@"Cancel"];
[alert setMessageText:@"Delete the record?"];
[alert setInformativeText:@"Deleted records cannot be restored."];
[alert setAlertStyle:NSWarningAlertStyle];

并展现模态对话框:

[alert beginSheetModalForWindow:[searchField window] modalDelegate:self didEndSelector:@selector(alertDidEnd:returnCode:contextInfo:) contextInfo:nil];

可以很好地工作:对话框会从App顶部slide down。


但是当我新建一个自带nib文件的windowController时,对话框却不从App顶部滑下来,而是直接出现在屏幕中的另一块位置,与main window看起来没什么直接联系。

- (void)simpleToolbarItemDidClick:(id)sender
{
    [NSApp beginSheet:self.simpleSheetCtrl.window
       modalForWindow:self.window
        modalDelegate:self.simpleSheetCtrl
       didEndSelector:@selector(sheetDidEnd:returnCode:contextInfo:)
          contextInfo:NULL];
}


最后,在SO上下载了一个demo来看,一一对比,才发现nib文件的visible at launch选项没有去掉。

这里有一份相关的gotcha:点击打开链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值