1) 選択したViewControllers (objOpponentInfoSettingsViewController.h および objOpponentInfoBuddiesViewController.h) のヘッダー ファイルで startFetchingFromServer が宣言されていることを確認します。
2) 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];
}