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