目前正在使用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];
}
視圖控制器代碼:
- (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'並且它正在被釋放。 –