1

iPad アプリで作業していますが、デリゲートに問題があります... プロトコル メソッドが呼び出されません。何が欠けているのかわからない、これが私のコードです。

@protocol pickerLabelProtocol <NSObject>
- (void)selectedPickerData:(UILabel *)sender;
@end

@interface showPickerVC : UIViewController
@property (nonatomic, strong) id <pickerLabelProtocol> delegate;
@end

@implementation showPickerVC
- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
//i used breakpoint, the 'delegate' is always nil for some reason?
    [self.delegate selectedPickerData:self.mainLabel];
}

----------------------
@interface someViewController : UIViewController <pickerLabelProtocol>
@property (nonatomic, strong) showPickerVC *showPicker;
@end

@implementation someViewController

- (void)selectedPickerData:(UILabel *)sender
{
//protocol method
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.showPicker = [[showPickerVC alloc]init];
    self.showPicker.delegate = self;
}
4

1 に答える 1

1

私はあなたのコードから間違いを犯すことはできませんが、それが自己showPickerVCであることを追加するオブジェクトをいつ作成するかを明確にすることをお勧めしますdelegate

そのような ,

showPickerVC *obj = [[showPickerVC alloc] init];
obj.delegate = self; /// YOur protocol delegate 
.
.
[self presentModalViewController:obj animated:YES];

また、次のようにコードを追加します

@implementation showPickerVC

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];

    if([self.delegate respondsToSelector:@selector(selectedPickerData:)])
    {
       [self.delegate selectedPickerData:self.mainLabel];
    }

}

プロトコルの作成/使用方法の詳細については。

于 2013-06-22T05:12:19.883 に答える