2015-07-04 107 views
1

我檢查,如果toViewController,這是我的TabBar第二個選項卡,是類MatchCenterViewController,但else語句運行,而不是,它告訴我,這不是那類。isKindOfClass布爾如果語句記錄NO

我肯定,在該選項卡中的UIViewController連接到MatchCenterViewController,那麼還有什麼可能導致此if語句不行?

NSLog(@"numberOfMatches is 1"); 

UIViewController *toViewController = [self.tabBarController viewControllers][1]; 

NSLog(@"toViewController: %@", toViewController); 

if ([toViewController isKindOfClass:[MatchCenterViewController class]]) { 

    NSLog(@"2nd matchcenter if statement works"); 
    MatchCenterViewController *matchViewController = (MatchCenterViewController *)toViewController; 

    matchViewController.didAddNewItem = YES; 

    NSLog(@"alright they're set, time to switch"); 

} 
else { 
    NSLog(@"toViewController is not MatchCenterViewController"); 
} 
[self.tabBarController setSelectedIndex:1]; 
+2

那麼你是什麼你有檢查權上面的日誌聲明說,它是什麼? – dan

+0

你爲什麼肯定你有聯繫?也許他們不是。 – duci9y

+2

你看到了什麼,當你運行'的NSLog(@ 「%@」,NSStringFromClass([self.tabBarController viewControllers] [1]類]);' –

回答

1

您可以添加NSLog(@"toViewController is of class: %@", NSStringFromClass([toViewController class]);並查看實際的視圖控制器類。

或者,如果didAddNewItem是隻有MatchCenterViewController有一個屬性,你可以試試這個方法:

if ([toViewController respondsToSelector:@selector(setDidAddNewItem:)]) { 
    // this is MatchCenterViewController 
} else { 
    // this is not MatchCenterViewController 
} 
+0

那'NSLog'註銷如下:‘toViewController是一流的:UINavigationController的’,並且if語句註銷‘這不是MatchCenterViewController’是'[self.tabBarController viewControllers] [1]'不要引用'MatchCenterViewController'正確的方式 – TheDudeGuy

+1

看起來像你的viewController的UITabBarController在索引1是持有MatchCenterViewController的UINavigationController的如果你的層次結構'的UITabBarController - >的UINavigationController - > MatchCenterViewController'和MatchCenterViewController是可見的視圖控制器在第二個選項卡中,您可以嘗試使用'UIN avigationController * navVC =(UINavigationController的*)[self.tabBarController.viewControllers] [1]; MatchCenterViewController * matchCenter =(MatchCenterViewController *)navVC.topViewController;' – Lucifer