3

如果我的问题标题似乎根本不知情,我很抱歉。让我解释一下我想要做什么。

我定义了以下 UIViewController 子类,它会启动 LocationManager,并有一个开始录制按钮来保存 GPS 轨迹。

现在我还想启动加速度计并允许用户记录它。

我的 ViewController 子类是 LocationManager 委托,那么我应该为 Accelerometer 委托使用什么?我可以使用同一个视图,还是需要定义一个子视图?

这是我的 UIViewController 子类的接口:

@interface RootViewController : UIViewController <CLLocationManagerDelegate> {
    NSMutableArray *eventsArray;
    NSManagedObjectContext *managedObjectContext;
    CLLocationManager *locationManager;
    BOOL recording;
    UILabel *pointLabel;
    UIButton *startStop;
}

-(void)toggleButton;

如果需要,我可以发布更多代码,但我认为这就是全部。感谢您的帮助,我刚刚进入 iPhone 开发领域,我的专长(如果有的话)在于无指针编程语言 :)

4

1 回答 1

8

让一个控制器对象作为不止一件事的委托是完全合理的。唯一的问题是,如果您的 LocationManager 和 Accelerometer 碰巧有重叠的委托方法,即如果它们都要求它们的委托响应具有相同签名的方法。

除此之外,您只需将控制器设置为两者的委托,就像您将其设置为委托一样:

@interface Controller : UIViewController
    <CLLocationManagerDelegate, AccelerometerDelegate>
{
    ...
}

然后:

[myLocationManager setDelegate:myController];
[myAccelerometer setDelegate:myController];

请原谅命名。我不知道您需要的 Accelerometer 和 LocationManager 类的名称是什么。我只是使用了想到的任何描述性名称:)

于 2009-07-09T23:15:51.373 回答