繁体   English   中英

从appdelegate引用一个已经实例化的viewcontroller

[英]Reference an already instantiated viewcontroller from appdelegate

我正在尝试关闭applicationDidEnterBackground中的位置服务,并在故事板的另一个vc中向我的Stop ...方法发送消息。 我在以下应用中尝试了该技术: 故事板-引用AppDelegate中的ViewController,但是我的理解是,这将创建相应VC的新实例,而不是对当前实例的引用,并且我通过nslogging原始控制器的地址来确认了这一点。以及AppDelegate中的参考。 它们是不同的,因此该方法不会停止我的位置服务。 我对VC实例的理解正确吗?

我简要地看到了Regions示例代码( https://developer.apple.com/library/ios/samplecode/Regions/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010726 )中使用的技术:

@class RegionsViewController;
@property (nonatomic, retain) IBOutlet RegionsViewController *viewController;
...
@synthesize viewController;
self.window.rootViewController = self.viewController;
[viewController.locationManager stopUpdatingLocation];

但这使用了笔尖,所以我不知道如何转换该代码。 它似乎依赖于最初从appdelegate实例化位置VC,因此一个唯一的实例是从appdelegate发生,而如果我了解,我的情节提要应用程序将隐式实例化我的位置VC。 玩Regions代码,分别记录AppDelegate和RegionsViewController的地址会显示匹配的值,这与预期的一样,因此位置服务实例已停止。 那么有人可以告诉我相当于Regions技术的情节提要吗?

谢谢

以下工作(在appdelegate中)。 至少我在AppDelegate中看到了用于最终控制器引用的nslog记录的地址,并且在引用的vc中直接检索到该地址时... ...并且在到达后台时,位置服务箭头消失了(经过随机滞后,这似乎是预期的行为) 。

我的vc结构是(root)Tabbar> Navcontroller> Nearby(我的位置控制器)。

UITabBarController *tabBarController =(UITabBarController *)self.window.rootViewController;

UINavigationController *navigationController = [tabBarController viewControllers][0];

Nearby *nearbyInstance = (Nearby *)[navigationController topViewController];
[nearbyInstance stopAllLocUpdateModes];

感谢rdelmar,我想您给了我足够的机会继续前进。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM