UIPickerView のデリゲートと dataSource を別のファイルに作成しようとしています。ViewController には次のものがあります。
- (void)viewDidLoad
{
[super viewDidLoad];
UIPickerView *myPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 200, 320, 200)];
MonthPicker *monthPicker = [[MonthPicker alloc] init];
myPickerView.delegate = monthPicker;
myPickerView.dataSource = monthPicker;
myPickerView.showsSelectionIndicator = YES;
[self.view addSubview:myPickerView];
}
MonthPicker.h
#import <UIKit/UIKit.h>
@interface MonthPicker : NSObject<UIPickerViewDelegate,UIPickerViewDataSource>
@end
MonthPicker.m
#import "MonthPicker.h"
@implementation MonthPicker
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
return 7;
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 1;
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
return @"yyy";
}
@end
現時点では、デリゲートを機能させるためにプレースホルダー値のみを使用しています。Everyting は正常にコンパイルされますが、アプリを実行してピッカーを含むビューに移動すると、コンソールにエラー メッセージが表示されずにクラッシュします。
Thread 1:EXC_BAD_ACCESS (code=2,address=0x0) という唯一のメッセージが表示されますが、これはまったく役に立ちません。
また、デリゲートのdeallocメソッドを NSLog でオーバーライドしようとしましたが、クラッシュが発生する前に割り当てが解除されたように見えますが、これは非常に奇妙です。
私は何が欠けていますか?
ありがとうございました。