@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的方法?
答案 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