【问题标题】:Opening a second window from an IBAction从 IBAction 打开第二个窗口
【发布时间】:2011-03-01 22:58:56
【问题描述】:

如何使用我创建的第二个窗口,有没有办法在触发 IBAction 事件时打开它,例如“触地”事件?

【问题讨论】:

  • 什么样的窗口? NSWindows?用户界面? X 窗口?微软视窗? WxWidget 窗口?你在哪个平台?你使用什么框架?什么操作系统?
  • 用 XCode 标记...不要认为 XCode 在 OSX 以外的其他操作系统上运行...
  • @Macmade Xcode 是一个 IDE,可以与你想要的 any 编译器一起使用。如果你想为 Microsoft Windows 编译并且你有一个在 Mac OS X 上运行但为 Windows 编译的编译器,Xcode 可以与那个编译器一起使用。
  • Mmmmhhhh... 用 XCode 编译 Obj-C MSWindows 应用... 为什么不... ; )
  • @Macmade 你是一名 Objective-C 程序员,甚至将 Obj-C 编码约定应用于 Microsoft 产品:MSWindows。有趣的。 :') [MSWindows showBlueScreenOfDeathWithPointer:ptr];?

标签: objective-c cocoa ibaction touch-event


【解决方案1】:

通常,您在单独的 XIB 文件中创建窗口,并创建 NSWindowController 的子类,将其设置为 XIB 文件的文件所有者。

然后,你需要重写init方法来加载XIB文件:

- ( id )init
{
    if( ( self = [ super initWithWindowNibName: @"MySecondWindow" ] ) )
    {}

    return self;

}

然后,您只需要创建第二个窗口控制器的新实例,并显示该窗口:

MyWindowController * wc = [ MyWindowController new ];
[ wc showWindow: nil ];

这可以通过您的 IBAction 方法完成。

【讨论】:

  • 非常感谢,这很好用,除了 IOS 开发文档之外,没有其他地方给出了这个,但有时它们会让人困惑。
【解决方案2】:

只是稍微扩展一下 Macmade 所说的内容:

我更喜欢正式的分配内存和初始化对象。

MyWindowController * wc = [[MyWindowController alloc] init];
[wc.window makeKeyAndOrderFront:self];

【讨论】:

  • 我明白了...所以我替换了变量> wc
猜你喜欢
  • 1970-01-01
  • 2012-12-21
  • 1970-01-01
  • 1970-01-01
  • 2018-12-06
  • 2010-12-20
  • 1970-01-01
  • 1970-01-01
  • 2016-10-12
相关资源
最近更新 更多