1 )確保startFetchingFromServer在selectedViewController的頭文件中聲明(objOpponentInfoSettingsViewController.h和objOpponentInfoBuddiesViewController.h)
2)cast你的SelectedViewController到適當的類。它是UIViewController,所以你的編譯器正在尋找UIViewController.h中的startFetchingFromServer方法聲明,而你想讓它看看你的自定義類。
if(opponentInfoTabBarController.selectedViewController == objOpponentInfoSettingsViewController)
{
(objOpponentInfoSettingsViewController *)[opponentInfoTabBarController.selectedViewController startFetchingFromServer];
}
else if(opponentInfoTabBarController.selectedViewController == objOpponentInfoBuddiesViewController)
{
(objOpponentInfoBuddiesViewController *)[opponentInfoTabBarController.selectedViewController startFetchingFromServer];
}
希望這有助於!
編輯: 更好的是檢查是否selectedViewController是一類特殊的:
if(opponentInfoTabBarController.selectedViewController isKindOfClass: [OpponentInfoSettingsViewController class])
{
(OpponentInfoSettingsViewController *)[opponentInfoTabBarController.selectedViewController startFetchingFromServer];
}
else if(opponentInfoTabBarController.selectedViewController isKindOfClass: [OpponentInfoBuddiesViewController class])
{
(OpponentInfoBuddiesViewController *)[opponentInfoTabBarController.selectedViewController startFetchingFromServer];
}
這樣,你沒有保持全局引用您的情況下,只是調用「startFetchingFromServer」的方法。
通過在調用它之前添加對「startFetchingFromServer」選擇器的檢查,可以使此代碼塊更加健壯。
類似:
if ([theViewController respondsToSelector:@selector(startFetchingFromServer)]){
[theViewController startFetchingFromServer];
}
如果(opponentInfoTabBarController.selectedViewController == objOpponentInfoSettingsViewController) { [objOpponentInfoSettingsViewController startFetchingFromServer]; } else if(opponentInfoTabBarController.selectedViewController == objOpponentInfoBuddiesViewController) {objOpponentInfoBuddiesViewController startFetchingFromServer]; } – casillas 2013-04-27 19:57:07
你好卡爾文,我已經更新了我上面的代碼。你認爲這是解決問題的正確方法嗎?順便說一句,非常感謝。 – casillas 2013-04-27 19:57:48
如果你的代碼指的是settings/buddies視圖控制器的同一個實例,那麼它很好。我仍然希望檢查選定的視圖控制器是否屬於特定的類,然後在selectedViewController上調用該類的方法。 – 2013-04-28 02:19:21