2012-07-17 29 views
9

我一直堅持這個警告幾個小時了。我環顧四周尋找答案,試圖找到所有我找到的,並找不到解決方案。這裏是我所擁有的代碼的破解,這是默認生成的Xcode。應用程序窗口預計在應用程序啓動結束時有一個根視圖控制器警告

這是我的AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    self.window.rootViewController = self.navigationController; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

我有這個在main.m文件(根據this answer

int main(int argc, char *argv[]) 
{ 
    @autoreleasepool { 
     int retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 
     return retVal; 
    } 
} 

我也有我的MainWindow.xib正確連接所有連接。所以我現在虧本了。任何我可能會錯過的東西?提前致謝!

+1

被標記爲已接受您的鏈接問題的答案恰好是解決問題作者問題的答案。其中列出了其他36個答案,描述了其他可能性的清單。 – dasblinkenlight 2012-07-17 04:10:29

+0

@dasblinkenlight這是一個奇怪的評論。 – 2012-07-17 04:11:12

+0

@robmayoff我試過重新措辭它並不奇怪。 OP鏈接的問題有很多答案,每個都描述了導致相同警告的不同問題,以及解決方法。 OP提到按照接受的答案所述解決問題,但聽起來他聽起來不像他已經嘗試過其他36項建議。 – dasblinkenlight 2012-07-17 04:15:11

回答

19

如果您有MainWindow.xib,將窗口的rootViewController設置爲application:didFinishLaunchingWithOptions:會很奇怪。通常一個項目如下三種模板之一:

  • 一些項目具有MainWindow.xib。目標的「主界面」在目標的「摘要」選項卡(或其Info.plist中)中設置爲「MainWindow」。這xib的文件的所有者是UIApplication。 xib包含AppDelegate的實例,連接到文件所有者的delegate插座。 xib還包含一個UIWindow,其插座連接到(或子類,如UINavigationController),它也位於xib中。當應用程序委託收到消息application:didFinishLaunchingWithOptions:時,xib被完全加載,所以窗口及其根視圖控制器已經設置好了。

  • 其他項目沒有MainWindow.xib。目標的「主界面」爲空。相反,UIApplicationMain函數創建一個AppDelegate的實例,將其設置爲UIApplication的代理,並將其發送給application:didFinishLaunchingWithOptions:消息。應用程序委託人通過創建UIWindow,創建視圖控制器(或多個視圖控制器)以及設置窗口的rootViewController屬性來處理該消息。默認的版本是這樣的:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
    { 
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
        // Override point for customization after application launch. 
        self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; 
        self.window.rootViewController = self.viewController; 
        [self.window makeKeyAndVisible]; 
        return YES; 
    } 
    
  • 一些項目具有MainStoryboard.storyboard。我不會詳細描述這一點,因爲它似乎與您的問題無關。

您正在描述的問題聽起來像是您使用了第一個模板的一半,第二個模板的一半。這是行不通的。你需要決定你正在採取的方式,並全押。

2

您可以打開xib文件並右鍵單擊佔位符中的「文件所有者」。如果視圖沒有連接到視圖插座,然後按住「Ctrl」鍵並拖動鼠標右鍵設計,然後再次運行^^(不要拖動到特定的控件,當出現邊框視圖時拖動到背景設計)。

0

我必須解決的問題在我的項目,按照下面的步驟來解決它..

1)打開主視圖控制器榫文件,該文件必須在appDelegate eg.ViewCotroller參考。xib

2)在nib文件上檢查視圖連接,如果沒有連接到文件所有者,則連接它。

3)現在運行該項目。

1

我有這條消息,因爲我在我的RootViewController @property(弱,非原子)IBOutlet UIView * loadView; 和viewDidLoad被調用兩次...將其重命名爲其他...

相關問題