目前正在使用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'并且它正在被释放。 –