2013-08-24 46 views
0

我有一個通用的應用程序,我成功將iPhone組件升級到ios7。 但是,ipad組件不再運行。我得到以下錯誤:從ios6轉換到ios7

終止應用程序由於未捕獲的異常「NSInvalidArgumentException」,原因是:「 - [UISplitViewController的TabBar]:無法識別的選擇發送到實例0x8d9eef0」

我不知道發生了什麼。我沒有觸及任何東西的ipad方面。

我正在運行:11A4449d構建和5A11365y爲Mac機上的x代碼構建。

這個代碼後,將錯誤發生:

- (void) awakeFromNib { 
    [super awakeFromNib]; 

    // whenever I come out of a storyboard, I make myself the delegate of any splitview I am in 
    self.splitViewController.delegate = self; 
} 
+1

錯誤清楚地表明您正在向不響應該消息的對象發送消息。你提供的代碼片段並不能幫助我們知道什麼。您只需要在調試器中逐步查看視圖控制器層次結構與預期的不同之處。 – Abizern

+0

我再次檢查了我的代碼。在該行有一個斷點: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions並意識到我添加了一些代碼來修改iPhone的TabBarItems。很顯然,iPad不喜歡這樣,所以我把這行代碼放在它周圍:BOOL piPad =(UI_USER_INTERFACE_IDIOM()== UIUserInterfaceIdiomPad); if(!piPad) {<引發iPAD問題的代碼>)。這解決了它。 – BitCracker

+0

我很高興你設法解決你自己的問題。 – Abizern

回答

0

在該方法中:我設置爲iPhone標籤欄上所選擇的圖像。 但是沒有意識到iPad會不喜歡它。所以我在它周圍放了一個選擇性聲明(如果!iPad)來修復它。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

    BOOL piPad = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad); 
    if (!piPad) 
    { 

     // ************************************************************************************************** 
     // Assign tab bar item with titles and selected images 
     UITabBarController *pTabBarController = (UITabBarController *)self.window.rootViewController; 

     UITabBar *pTabBar = pTabBarController.tabBar; 
     UITabBarItem *pTabBarItem0 = [pTabBar.items objectAtIndex:0]; 


     pTabBarItem0.title = @"List"; 


     pTabBarItem0.selectedImage = [UIImage imageNamed:@"tabBarList_30x30_selected"]; 
     pTabBarItem0.image = [UIImage imageNamed:@"tabBarList_30x30.png"]; 


     // ************************************************************************************************** 
    } 

    return YES;