我有一些RootviewControllers
,当然还有一个App Delegate。在我的App Delegate上,我切换到我想要的所有控制器。
现在,如果用户按下App Delegate上的完成按钮(-IBAction Deklaration),我想禁用GPS。如何从RVC中调用该功能。
我见过那个样本
MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
但我真的不明白它的作用。
在我的RootViewController上,我想要这个
[self.mapView setShowsUserLocation:NO];
将在此功能
中的App Delegate中执行-(IBAction) btnLocationDone {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.7];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown
forView:MainView cache:YES];
[UIView commitAnimations];
[MainWindow addSubview:MainView];
[LocationWindow setHidden:YES];
[MainWindow setHidden:NO];
[LocationWindow removeFromSuperview];
}
请帮忙。
答案 0 :(得分:0)
目前尚不清楚您在问什么,问题的本质意味着您需要更好地了解iOS应用程序架构。 UI交互只应在UIViewController
子类中完成,而不应在UIApplication
委托中完成,UIApplication
委托应仅负责btnLocationDone
的委托函数(如名称所示),包括启动和关闭处理。
方法UIViewController
没有理由在你的app委托中;例如,它可以更好地放置在btnLocationDone
的共享超类中,或者放在协调对象中,具体取决于您对架构的选择。
强烈建议只有类名以大写字母开头。
如果您想在视图控制器中调用IBAction
时在您的应用委托中执行- (IBAction)done {
[self.mapView setShowsUserLocation:NO];
MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
[delegate btnLocationDone];
}
,您可以这样做:
{{1}}