閱讀505 返回首頁    go 阿裏雲 go 技術社區[雲棲]


xcode 4.3 不再支持 Window-Based Application 的解決辦法

由於Xcode4.3已經不再支持Window-Based Application模板,

1:創建空項目 Empty Application。(在Xcode4.2下創建的這個空項目不再有MainWindow.xib文件了。)

2:Ctrl+N,創建User Interface下麵的Window(選擇“iOS->User Interface->Window),命名成MainWindow.xib(這名稱可隨意,隻是以MainWindow我們更熟悉)。

3:3.File Owner修改成UIApplication。(即調出show identity inspector麵板,將file's Owner的屬性Custom Class中將class改為UIApplication。)



   4.從Library庫中,拖個Object出來添加,並修改類為Delegate的那個類,最開始自動生成的那個。(即將新添加的Object的Class改為AppDelegate)


 5.把Delegate類的屬性window聲明加上IBOutlet,這樣才好在IB裏麵連接。(即將AppDelegate中UIWindow屬性標記為IBOutlet)
        即@property (strong,nonatomic) UIWindow *window;修改為:@property (strong, nonatomic) IBOutlet UIWindow *window;
    然後,把MainWindow.xib的FileOwner的delegate設置為你的AppDelegate。

FileOwner的delegate和AppDelegate(Object)連接:(藍色連線哦)


 把Window和你AppDelegate中的Outlet關聯起來:



  6.(可以看到,已經有一個Window對象,此window對象就是iphone的屏幕。)把window屬性連接到IB中默認出現的Window。

7.給剛才的代理再加個@property (strong,nonatomic) IBOutlet  UIViewController* rootController;屬性

 8.在IB中拖個UIViewController出來,並連接到前麵的Object的rootController。
     9.在代理的didFinishLaunchingWithOptions函數中修改下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
// self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    [self.window setRootViewController:rootController];
    [self.windowaddSubview:rootController.view];
    [self.windowmakeKeyAndVisible];
return YES;
}
不需要再創建window,然後把rootcontroller的view添加到當前window下麵就可以了。

注釋掉 -(BOOL)application:didFinishLaunchingWithOptions:方法中與我們從XIB加載相衝突的方法調用

(self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];)。

10:建立一個class,然後將在MainWindow建立的UIViewController的Class屬性設置為新的剛剛建立的class。


 11.關鍵一個步驟,打開項目屬性,在Summary下麵的Main Interface裏麵選擇MainWindow完事



最後更新:2017-04-04 07:03:38

  上一篇:go POJ 3233 矩陣連乘+二分
  下一篇:go 杭電1004