Cocoa 静态显示一个对话框2 [帮大家复习一次]

第一步:

在你建立的工程里面:

Add Files:选择:

OX S-> Cocoa->Objective-C Class

(1)输入文件名(例如:Form_1)

(2)选中 with XIB

(3)下拉列表里面选择:Subclass of :NSWindowController

然后在Form_1.m里面输入:

/********************************************

 Function : init (显示一个窗口,需要初始化)

 [动增加此函数]

*********************************************/

- (id)init

{

    //以下的名称是*.xib文件的名称,扩展名不要写在里面(由于在添加窗口的时候,选中with xib就会增加一个同名的窗口文件)

    if (![superinitWithWindowNibName:@"Form_1"])

    {

       return nil;

    }

    return self;

}


// 以下三个函数是为了在其他程序里可以显示本窗口 +++

// 显示窗口

- (IBAction)showWindow:(id)sender

{

    [[NSApplicationsharedApplication] runModalForWindow:self.window];

}

// 闭窗口:只有关闭了这个窗口,才会显示其他的窗口,达到静态显示本窗口非目的,否则不能显示为第一个窗口TOP

-(void)closeModalWindow:(id)sender

{

    [[NSApplicationsharedApplication] stopModal];

}

// 作用同上

- (void)windowWillClose:(NSNotification *)notification

{

    [selfperformSelectorOnMainThread:@selector(closeModalWindow:)withObject:nilwaitUntilDone:NO];

}

// 以下三个函数是为了在其他程序里可以显示本窗口 ---

接着:

在调用的程序里面:

H里面要申明窗口变量

#import <Cocoa/Cocoa.h>

#import "Form_1.h" //一定要在这里引用


@interface EDUCATIONDocument :NSPersistentDocument

{

   Form_1 *m_form1;//需要在这里申明变量

}


@end


在M的调用函数里面写入

- (IBAction)OnBT_ShowADialog:(id)sender

{

   if(!m_form1)

    {

        m_form1 = [[Form_1alloc]init];//Test OK!

        // m_form1 = [Form_1 new];      //Test OK!

        //以上2种方法测试都OK!

    }

    [m_form1showWindow:sender];

}


完整的代码是

Form_1.h

#import <Cocoa/Cocoa.h>

@interface Form_1 : NSWindowController

@end


Form_1.m

#import "Form_1.h"

@interface Form_1 ()

@end

@implementation Form_1

// This function was created by XCode
- (id)initWithWindow:(NSWindow *)window
{
    self = [super initWithWindow:window];
    if (self) {
        // Initialization code here.
    }
    
    return self;
}

// This function was created by XCode
- (void)windowDidLoad
{
    [super windowDidLoad];
    
    // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
}

/********************************************
 Function : init (显示一个窗口,需要初始化)
 [手动增加此函数]
*********************************************/
- (id)init
{
    //以下的名称是*.xib文件的名称,扩展名不要写在里面(由于在添加窗口的时候,选中with xib就会增加一个同名的窗口文件)
    if (![super initWithWindowNibName:@"Form_1"])
    {
        return nil;
    }
    return self;
}

// 以下三个函数是为了在其他程序里可以显示本窗口 +++
// 显示窗口
- (IBAction)showWindow:(id)sender
{
    [[NSApplication sharedApplication] runModalForWindow:self.window];
}
// 关闭窗口:只有关闭了这个窗口,才会显示其他的窗口,达到静态显示本窗口非目的,否则不能显示为第一个窗口TOP
-(void)closeModalWindow:(id)sender
{
    [[NSApplication sharedApplication] stopModal];
}
// 作用同上
- (void)windowWillClose:(NSNotification *)notification
{
    [self performSelectorOnMainThread:@selector(closeModalWindow:) withObject:nil waitUntilDone:NO];
}
// 以下三个函数是为了在其他程序里可以显示本窗口 ---

@end


调用代码如上已经写好。

在M文件里面

- (IBAction)OnBT_ShowADialog:(id)sender

{

   if(!m_form1)

    {

        m_form1 = [[Form_1alloc]init];//Test OK!

        // m_form1 = [Form_1 new];      //Test OK!

        //以上2种方法测试都OK!

    }

    [m_form1showWindow:sender];

}

H文件里面申明

#import <Cocoa/Cocoa.h>

#import "Form_1.h"


@interface EDUCATIONDocument :NSPersistentDocument

{

   Form_1 *m_form1;

}


@end


以上代码经本人测试验证运行成功!

完!


补充:有时候掉用启动不起来,可以用这种方式调用

//    if (m_form3 == nil)

//    {

//        m_form3 = [form3 new];

//        [m_form3 showWindow:self];

//    }

//    else

//    {

//        [m_form3 showWindow:self];

//    }


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值