私はObjective-Cのマスターではなく、Javascriptで簡単に何か問題を抱えています(リスナーを作成してバインドします)... Objective-Cで行う方法を理解できません。UISliderデリゲート/別のオブジェクトへのバインド?
私は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に、私は結果なしで[自己デリゲート]と[送信者の委任]で試してみました(私のUISliderからこれまでの私のvalueChangedを結合しました。 。):これは、デリゲートのインスタンス用カント検索セレクタsliderValueChangedを言って、ここでクラッシュし
- (IBAction)timeSliderValueChanged:(id)sender {
[delegate sliderValueChanged:sender];
}
...私はまだ私のコードの残りの部分を詳しく説明します。
私のテストオブジェクトが、私は私のViewControllerの内側に私のMKMapViewに追加MKAnnotationあり、ここで変わったことはし私はちょうどこのようにそれを追加していません。
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;
最後に、これは注釈mのコードです。決して解雇されない。
- (void)sliderValueChanged:(id)sender{
NSLog(@"state changed");
}
はまだ私はそれが私の注釈でsliderValueChangedを発射が、トラック上のイム場合は完全にわからないように取得する方法を把握しよう。 もっと経験豊富な人が私を導くことができれば、それは非常に高く評価されます:)。
あなたはそれを解決しましたか?それが助けられたら、答えを受け入れてください。 – calimarkus