次のように UIView のカスタム サブクラスを作成しようとしています。
Picker オブジェクトと Toolbar オブジェクトを含む UIView を使用して .xib を作成し、Outlets とアクションを接続しました。
CustomPickerView.h
#import <UIKit/UIKit.h>
@interface CustomPickerView : UIView
@property (strong, nonatomic) IBOutlet UIDatePicker* datePicker;
@property (strong, nonatomic) IBOutlet UIBarButtonItem* doneButton;
-(IBAction) buttonDonePush:(id)sender;
@end
CustomPickerView.m
#import "CustomPickerView.h"
@implementation CustomPickerView
-(id) init
{
self=[[[NSBundle mainBundle] loadNibNamed:@"CustomPickerView" owner:self options:nil] objectAtIndex:0];
return self;
}
-(void) buttonDonePush:(id)sender
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"CustomPickerViewDoneButtonPush" object:nil userInfo:[NSDictionary dictionaryWithObject:self.datePicker.date forKey:@"date"]];
}
@end
最後に、ViewController で、viewDidLoad メソッドでオブジェクトをインスタンス化します。
- (void)viewDidLoad
{
[super viewDidLoad];
self.customPickerView=[[CustomPickerView alloc] init];
self.customPickerView.datePicker.datePickerMode=UIDatePickerModeTime;
self.dateField.inputView=self.customPickerView;
}
ユーザーが self.dateField をタップすると、CustomPickerView が標準キーボードの代わりに適切に表示されます。
問題は、ユーザーが CustomPickerView クラスから [完了] ボタンをタップすると、buttonDonePush アクションが起動しないことです。