码迷,mamicode.com
首页 > 移动开发 > 详细

ios应用程序的两种启动方式

时间:2015-09-04 14:21:22      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

记得几个月前刚接触ios时,因为要急着完成任务,树立运用的办法彻底依照书本,而书本讲的是xcode3,而装的xcode的版别是4。所以,书上的一些东东和xcode的版别对不上,十分烦恼,为了创立一个windows base 的project,都费力了心思。

过了几个月,回到来想想当初的疑问,无非是没有理解xib的原理,没有弄清楚在ios里,假如经过xib来创立目标。

关于xib创立目标,能够从发动开端。咱们来看看windows base project的做法和 single view project的做法。

 

一:关于 window base 的创立过程:

第1步:将创立的xib设置为发动frame。这个能够在 target>>summary>>main interface中设置。

这有点相当于将运用的发动进口设置为本xib。

第2步:这个发动xib的file owner一定是 UIApplication。但真实的大局AppDelegate是哪个呢?

那就需求你在xib中新建一个Object,然后把类名设置为您的真实的发动署理类:xxxx_AppDelegate

留意:这儿需求将发动类绑定到 file owner的delegate。(和UI元素的绑定办法相同)。

咱们再看看main函数:

        int retVal = UIApplicationMain(argc, argv,nil, nil);

这儿没有指定发动的署理类。我猜测最终一个参数不设置的话,就会从发动xib中的UIApplication.delegate来指定。

 

第3步:继然是window base,那你当然需求在发动xib中创立一个window。

创立的window与代码怎么对应呢?一般咱们是在 xxxx_AppDelegate中创立一个UIWindow。

然后在xib中将window与署理中的实例衔接上,然后代码中就直接用了,和运用一个控件相同。

这么,程序一发动,就创立了一个UIWindow。不需求你写UIWindow的创立代码。

第4步:作为一个UI程序,应当会有界面逻辑,而界面需求包含在UIViewController中,

所以,你能够在发动xib中创立UIViewController,绘制你的界面。或许直接相关别一个nib文件。

当然,你要运用它,依然需求在xxxx_AppDelegate中声明UIViewController中的目标viewController,然后在xib中树立衔接。

留意:这种办法下,UIViewController是主动创立的,不需求你写创立的代码。

最终一步:经过上面的动作。在发动署理的发动办法didFinishLaunchingWithOptions中增加以下代码就搞定了。

    [window addSubview:viewController.view];

    [window makeKeyAndVisible];

依照上面这种办法,咱们的发动界面没有运用 alloc来创立任何ui目标,所有ui目标都是经过xib加载时主动生成的。

需求留意的是,这种办法,需求将xib设置为 main interface。假如您的程序是iphone和ipad习惯的,那能够设置两个不一样的发动xib.

假如在xcode4中要创立 window base project,差不多就上面的套路。靠xib来生成window和viewController.

注:我也见到过没有设置main interface的程序,并且在main中也没有设置AppDelegate类。我猜测,默以为运用MainWindow.xib做为

发动Interface。好象书中的hello_world即是这么的。

 

二:再看看single view project的创立办法。

第1步:当然,咱们不能设置 main interface。咱们需求看看main函数。在其间设定发动署理类。

UIApplicationMain(argc, argv,nil, NSStringFromClass([SingViewTest_AppDelegateclass]));

在这儿,第4个参数咱们指定了发动的AppDelegate,而不是象上面那样,经过xib来指定发动署理类。

 

第2步:在发动办法中,自行创立window

    self.window = [[[UIWindowalloc] initWithFrame:[[UIScreenmainScreen] bounds]] autorelease];

  上面的代码创立一个全屏的窗体,看看,是咱们自已alloc的。

 

第3步:经过程序来创立 SingelView的viewControoler.

    self.viewController = [[[SingViewTest_ViewControlleralloc] initWithNibName:@"SingViewTest_ViewController"bundle:nil]autorelease];

  假如您的viewController想经过xib来加载(一般的办法),那就采取上面的办法。

假如您不想运用 UI 设计器,你也能够

 

    MyViewController *vc = [[ MyViewControlleralloc] init];

当然,这种状况你需求在viewdidLoad中动态生成您的ui元素。

最终一步:将viewcontroller的ui显示出来。

    self.window.rootViewController =self.viewController;

    [self.windowmakeKeyAndVisible];

 

经过上面两个工程的创立,能够看出,ios供给两个发动进口的办法。

办法一:指定xib做为发动interface,这种办法下,需求自已指定发动AppDelegate。

能够经过创立 object,然后改类名,再绑定的办法。

这种办法下,能够以此为起点,将真实的发动window,发动ViewController在此处创立和衔接。

关于简略的运用,咱们还能够在这个发动的xib里,将发动的ui都画好。

 

办法二:在main中指定发动AppDelegate。

这个需求修改 main函数中 UIApplicationMain办法的最终一个参数。

这种办法下,发动的windows,viewController需求自已通过alloc来生成,后边的做法和办法一就没啥区别了。

 

引荐网站 http://www.keymob.com/

ios应用程序的两种启动方式

标签:

原文地址:http://www.cnblogs.com/admobgoogle/p/4781619.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!