我有两种不同的POC,一种用于加速度计,另一种用于GPS。但是,我不理解将这两个应用程序结合起来的架构。我需要在应用程序加载时初始化加速和GPS。我将主视图绑定到加速,但也需要设备的位置。
我目前的架构是 工作区中的项目
主应用程序ViewController继承
:UIViewController
所有连线都正确连接,加速按预期工作。
在Utility CoreLocationUtility类中,我继承了CLLocationManagerDelegate。
问题是,如何从AccelDelegate类型的同一视图中注册委托?
答案 0 :(得分:0)
如果您想让ViewController充当加速度计和GPS的委托,请在其头文件中声明它遵守两个委托协议:
@interface ViewController : UIViewController <CLLocationManagerDelegate, UIAccelerometerDelegate> {
CLLocationManager *myLocationManager; // an instance variable
}
// ... your definitions
@end
然后在ViewController的某个地方
[UIAccelerometer sharedAccelerometer].delegate = self;
myLocationManager = [[CLLocationManager alloc] init];
myLocationManager.delegate = self;
然后在ViewController中的其他地方,为两个协议放置委托方法
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
// ... your code
}
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
// ... your code
}
这应该有效,虽然可能有拼写错误,但我没有编译过。另外,根据我的经验,位置管理器代码往往变得非常大。将它放在自己的类中可能会好得多,可以通过ViewController进行实例化。
有人可以解释为什么UIAccelerometerDelegate协议中唯一的方法已弃用吗?