2012-12-27 55 views
1

我正在使用Xcode 4.5和iOS6爲iPhone編寫應用程序。我還創建一個新的UIWindow能夠管理狀態欄的區域(在那裏顯示的消息等) 我用故事板和我的appDelegate方法是這樣的:「應用程序窗口預計有一個根視圖控制器」有條件的外觀

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    return YES; 
} 

的消息在控制檯中沒有出現當我把它叫做viewDidAppear方法:

- (void)viewDidAppear:(BOOL)animated  { 

    if (!window) { 
     window = [[SGStatusBar alloc] initWithFrame:CGRectZero]; 
     window.frame = [[UIApplication sharedApplication] statusBarFrame]; 
     window.alpha = 0.5f; 

     [self.view.window makeKeyAndVisible]; // has to be main window of app 
     window.hidden = NO; 
    } 
} 

同樣的方法,把在viewDidLoad給出了控制檯的警告:

2012-12-27 11:34:20.838 NewApp[433:c07] Application windows are expected to have a root view controller at the end of application launch 

這是因爲我創建了一個新的UIWindow?爲什麼這兩種方法之間的差異如此之大?

而且,最重要的是,我怎麼能擺脫這個警告把代碼放在viewDidLoad方法?

編輯:

我也遇到了同樣的問題here,但它不是我想解決這個問題(它實際上是我解決它現在的方式)

方式

我試着做這個設置我的當前視圖控制器作爲我的窗口的根視圖控制器:

ViewController *vcB = [[UIViewController alloc] init]; 
window.rootViewController = vcB; 

但我不斷收到一個警告是s ays:

Incompatible pointer types initializing 'ViewController *__strong' with an expression of type 'UIViewController *' 
+0

我認爲它要求你創建一個NavigationController並添加你的第一個控制器作爲你的navigationcontroller的根 – superGokuN

+0

@superGokuN我相信你錯了。爲什麼我需要一個只有1個視圖的應用程序中的NavigationController?我不想*或*需要使用一個。 –

+1

至於差異嘗試:http://stackoverflow.com/questions/11254697/difference-between-viewdidload-and-viewdidappear – Paxic

回答

1

設置window.rootViewController屬性。

+0

我通過創建一個新的UIViewController並設置window.rootViewController屬性來解決我的問題。感謝一個好主意! –

+0

不客氣。 –

0

將以下代碼添加到您的delegate.h和delegate.m文件中。

AppDelegate.h

@property (strong, nonatomic) UIWindow *window; 
@property (strong, nonatomic) YourViewController *viewController; 

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 
    // Override point for customization after application launch. 
    self.viewController = [[[YourViewcontroller alloc] initWithNibName:@"YourViewcontroller" bundle:nil] autorelease]; 
    self.window.rootViewController = self.viewController; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

希望工程。

+0

我使用故事板,因此,這段代碼是不需要的。不過,感謝您的幫助。 –

相關問題