Как настроить контроллер представления в качестве делегата для двух вещей (например, LocationManager и Акселерометр)?

Извините, если название моего вопроса кажется принципиально неосведомленным. Позвольте мне объяснить, что я пытаюсь сделать.

Я определил следующий подкласс UIViewController, который запускает LocationManager и имеет кнопку Start Recording для сохранения GPS-трека.

Теперь я хотел бы также запустить акселерометр и позволить пользователю также записать это.

Мой подкласс ViewController является делегатом LocationManager, так что я должен использовать для делегата акселерометра? Могу ли я использовать тот же вид или мне нужно определить подпредставление?

Вот интерфейс для моего подкласса UIViewController:

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

-(void)toggleButton;

Я могу опубликовать больше кода при необходимости, но я думаю, что это все, что применимо. Спасибо за вашу помощь, я только начинаю разработку iPhone, и мой опыт, если он у меня есть, лежит в языках программирования без указателей:)

1 ответ

Решение

Вполне разумно, чтобы один объект контроллера был делегатом для более чем одной вещи. Единственным ударом будет то, что и у вашего LocationManager, и у вашего акселерометра есть методы делегатов, которые перекрываются, т. Е. Если они оба требуют, чтобы их делегаты ответили на метод с одинаковой сигнатурой.

Кроме того, вы просто настроили бы свой контроллер для делегирования для обоих, почти так же, как вы настроили его для делегирования для одного:

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

И позже:

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

Пожалуйста, извините за наименование. Я не знаю, как называть названия классов Accelerometer и LocationManager, которые вам нужны. Я просто использовал любые описательные имена, которые приходили на ум:)

Другие вопросы по тегам