Я не владелец Objective-C, и у меня есть проблемы с чем-то простым, что можно сделать в Javascript (создать и связать слушателя) ... Просто не могу понять, как это сделать в Objective-C.
Итак, у меня есть UISlider.Всякий раз, когда пользователь начинает перетаскивать его, я хочу запустить функцию X из объекта (в этом случае MKAnnotation, но любой NSObject, Controller и т. Д. Должны иметь возможность слушать).
Является ли делегат правильнымиспользовать для этого?Я попытался это безуспешно:.
В моем ViewController.h
@protocol TimeSliderDelegate <NSObject>
- (void)sliderValueChanged:sender;
@end
@interface ViewController : UIViewController<MKMapViewDelegate>{
IBOutlet UISlider *timeSlider;
IBOutlet MKMapView *mapView;
id <TimeSliderDelegate> delegate;
}
@property (retain) id delegate;
Затем, в моем ViewController.m, я привязал к нему значение ValueChanged из своего UISlider (пробовал с [self делегат] и [отправитель делегата] без результата ..):
- (IBAction)timeSliderValueChanged:(id)sender {
[delegate sliderValueChanged:sender];
}
Здесь происходит сбой, говоря, что не могу найти селектор sliderValueChanged для экземпляра делегата ... I 'Я все еще буду дорабатывать оставшуюся часть моего кода.
Мой тестовый объект - это MKAnnotation, которую я добавляю в свой MKMapView внутри моего ViewController, здесь нет ничего необычного, я просто добавляю его вот так.
Annotation *annotation = [[Annotation alloc] init];
CLLocationDegrees lat = 0;
CLLocationDegrees lng = 0;
[(Annotation*) annotation setCoordinate:CLLocationCoordinate2DMake(lat, lng)];
[mapView addAnnotation:annotation];
Затем в моем Annotation.h я импортирую свой viewController и устанавливаю его как TimeSliderDelegate и реализую sliderValueChanged.
#import "ViewController.h"
@protocol TimeSliderDelegate;
@interface Annotation : MKAnnotation<TimeSliderDelegate>
- (void)sliderValueChanged:(id)sender;
Наконец, это был мой код в Annotation.m.Никогда не стреляли.
- (void)sliderValueChanged:(id)sender{
NSLog(@"state changed");
}
Все еще пытаюсь выяснить, как я могу заставить его выстрелить sliderValueChanged в моей аннотации, но не совсем уверен, что я на трассе.я, это было бы очень цениться:).