Как настроить контроллер представления в качестве делегата для двух вещей (например, 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, которые вам нужны. Я просто использовал любые описательные имена, которые приходили на ум:)