2

我有两种不同的 POC,一种用于加速度计,一种用于 GPS。但是,我不理解将这两个应用程序结合起来的架构。当应用程序加载时,我需要初始化加速度和 GPS。我将主视图绑定到加速器,但还需要绑定到设备的位置。

我当前的架构是工作区中的项目

  • 主应用
  • 实用程序
  • 服务应用程序
  • 域应用

主应用 ViewController 继承

: UIViewController

所有接线正确,加速按预期工作。

在 Utility CoreLocationUtility 类中,我让它继承了 CLLocationManagerDelegate。

问题是,如何从 AccelDelegate 类型的同一视图注册委托?

4

1 回答 1

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 协议中的唯一方法?

于 2012-12-01T19:05:26.230 回答