現在、CoreDataを使用して列車を検出するアプリを開発中です。基本的には、各電車は対応する一連の照準で格納されます。ユーザーが列車を見ると目撃情報が記録され、列車のシリアル番号(基本的なデータ関係)に戻されます。UIPickerViewがローをロードしていません
UIPickerView
にシリアル番号を入力しようとしていますが、私はこの特定のPickerViewを複数回使用することを計画しているので、独自のクラスを持ち、ViewControllerに実装されていません。
デリゲートとデータソースを正しく設定しましたが、PickerViewにデータが入力されることはありません。各機能であるNSLog
とprintf
コードから私はtitleForRow
が呼び出されないことがわかり、ここでnumberOfRowsInComponent
ではありませんどちらもできUIPickerView
クラスのための私のコードです:
-(id)init
{
//init super class.
self = [super init];
//get allocate array reader (TrainSightingReaderWriter) then set the array that this picker will be getting data from.
[self setArrayReader:[[TrainSightingReaderWriter alloc] init]];
[self setArray: [[self arrayReader] getTrainSerialArray]];
NSLog(@"INIT PickerView");
//return this object.
return self;
}
-(int)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
printf("At component counter\n");
return 1;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
printf("At counter. %d is output\n", _array.count);
return _array.count;
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
NSLog(@"Returning a value.");
return [self array][row];
}
のViewControllerコード:
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"We have made it to the AddSightVC.");
TrainPicker * mypicker;
mypicker = [[TrainPicker alloc]init];
//ISSUES
_trainPickerScroller.delegate = mypicker;
_trainPickerScroller.dataSource = mypicker;
[_trainPickerScroller reloadAllComponents];
[_trainPickerScroller reloadInputViews];
// Do any additional setup after loading the view.
}
「TrainPicker」とは何ですか? '_trainPickerScroller'をどこで初期化しますか? –
'TrainPicker'は' UIPickerView'のための私のクラスです: '@interface TrainPicker:UIPickerView'のように。 '_trainPickerScroller'はピッカー自体のコンセントです。 –
Swemoph
これは奇妙に思えますが、2つのピッカービューがあり、データソースとしてのみ使用されます。とにかく、問題は、あなたが 'mypicker'への強い参照を持っておらず、割り当てが解除されているということです。 –