如何在tabbar控制器的当前视图控制器中调用方法?

时间:2011-04-08 08:13:05

标签: iphone

@interface MyAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
    UITabBarController *tabBarCtrl; 
}
@end

@interface FirstViewController : UIViewController {
}
-(void)myMethod;
@end

我想从MyAppDelegate.m在FirstViewControlle.m中调用myMethod。 我试过这个。

[self.tabBarCtrl.selectedViewController myMethod];

编译器说“UIViewController可能无法响应myMethod”。 如何调用FirstViewController的方法?

2 个答案:

答案 0 :(得分:1)

你投了它,所以编译器知道确切的类型。 (如果对象实际上是那种类型,你必须非常肯定和/或检查运行时)

[(FirstViewController*) self.tabBarCtrl.selectedViewController myMethod];

应该这样做。

请编译“警告为错误”。这将通过强迫您“解决”所有警告来帮助您提高技能。而且我认为你还有很多需要学习的东西; - )

答案 1 :(得分:1)

好吧,因为你在UIViewController上调用一个方法,Obj-C无法保证该方法存在。 您可以检查方法是否存在:

if([self.tabBarCtrl.selectedViewController repondsToSelector:@selector(myMethod)]) {
  [self.tabBarCtrl.selectedViewController performSelector:@selector(myMethod)];
}

这种方式允许你创建myMethod而不仅仅是FirstViewController