對iOS多視圖開發的補充(針對XCode4.2開發環境,Empty Application沒有...

昨天參照書中的例子,回到家後開始實現示例中的代碼.html

發現XCode4.2中沒有Window Base Application這一選項.使用Empty Application沒有主界面的Storyboard文件.ios

因而打開google,發現Jeroen Trappers有一篇文章有詳細的解決方法.編程

地址:http://www.trappers.tk/site/2011/06/16/mainwindow-xib/app

 

個人見解是(不必定準確):AppDelegate是個代理類,起相似與window編程下的WNDPROC函數.框架

與其配合的是UIApplication.函數

在沒有XIB文件的狀況下,是經過程序的方式加載UIApplication的一個實例完成框架的創建的.學習

爲了從XIB文件中加載,咱們就要本身建立一個XIB文件,這是首先的問題.測試

如何將XIB文件和AppDelegate的類關聯是下面的問題.ui

 

咱們知道,AppDelegate須要一個UIApplition實例,這個事例保存全部XIB上元素的拷貝.因此File's Owner的類名咱們要改成UIApplicaiongoogle

同時UIApplicaion有一個插座IBOutlet恰好是咱們AppDelegate能夠對接的.類型UIApplicationDelegate

因而咱們首先拖放一個Object,修改類名爲咱們的xAppDelegate,這樣就能夠將這個Object和UIApplication中的delegate連接了.

delegate

The delegate of the application object.

@property(nonatomic, assign) id<UIApplicationDelegate> delegate

Discussion

The delegate must adopt the UIApplicationDelegate formal protocol. UIApplication assigns and does not retain the delegate.

Availability
  • Available in iOS 2.0 and later.
Declared In UIApplication.h

 

源文件中有UIWindow的變量 window ,咱們須要在上面添加的Object(類名xAppDelegate)裏面建立一個Window,而後把變量加上IBOutlet後進行連接.

這樣就完成了XIB中AppDelegate和它下面Window的兩個對象從XIB到代碼之間的連接.

 

但是此時程序的入口並無改變,文章中推薦的方式是在工程配置中的Main Interface修改成一個XIB文件名,其實就是在程序中加載XIB文件做爲入口.

一樣的功能,也許咱們在代碼中也能夠實現.相似與initWithNibName的方法,暫時我沒有實現.

 

還有就是註釋掉了一個初始化的函數:- (BOOL) application:didFinishLaunchingWithOptions: 這個方法中的操做是跟咱們從XIB加載相沖突的.

 

經過以上幾個步驟,咱們就能夠從Empty Application中自定義的加載一個XIB文件了.

學習到這裏,讓我對整個XIB的工做方式和UIApplication的工做原理又有了更深一步的瞭解.

對於之後的多視圖學習很是的有幫助.

 

以上操做的詳細步驟以下,順便複習一下:

1.建立Empty application,此時項目中只有一個AppDelegate的類

Start with Empty Application template

2.新建文件,選擇User Interface下的Empty 命名爲MainWindow

Add Empty Interface Builder document

3.打開新建的MainWindow.xib文件

The empty design surface of MainWindow.xib

 

4.將File's Owner的類名修改成UIApplication

Change class of File's Owner to UIApplication

5. 在Library中拖放一個Object到圖下的位置

Add Object to the document

6.將該object的類名修改成文件中AppDelegate的類名(同時還能夠給object命名下Label)

Change class of the object to xAppDelegate

7.拖放一個Window到左邊

Add a window to the document

8. 在xAppDelegate的h文件中,給window的屬性加上IBOutlet

@interface  DemoAppDelegate :
      UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) IBOutlet UIWindow *window;
@end

9.將File's Owner 和 拖放的Object按照如下方式鏈接

Link the application delegate

 

Link the window outlet of the app delegate

 

10.在項目屬性中,把Main Interface修改爲你的xib文件名MainWindow

Set the Main Interface to MainWindow

11. 在xAppDelegate.m文件中,將

- (BOOL) application:didFinishLaunchingWithOptions:

 

這個方法所有註釋掉

 

以上在Lion 10.7.2 XCode4.2中測試經過.

--------------------- 我能夠操縱冰冷的代碼,但我操縱不了個人人生......
相關文章
相關標籤/搜索