我有一个主视图,其中包含一个landscapeview和一个portraitview,它被加载为包装器视图的子视图。横向视图和纵向视图都具有链接到它们的UIPickerView对象。在我的源代码中,我将它们全部作为属性,我还有一个景观和肖像选择器的包装器。它们被定义为
@property (nonatomic, retain, readonly) IBOutlet UIPickerView *pickerTown;
@property (nonatomic, retain, readonly) IBOutlet UIPickerView *pickerType;
@property (nonatomic, retain, readonly) IBOutlet UIDatePicker *pickerFrom;
@property (nonatomic, retain, readonly) IBOutlet UIDatePicker *pickerTo;
@property (nonatomic, retain) IBOutlet UIPickerView *landscapePickerTown;
@property (nonatomic, retain) IBOutlet UIPickerView *landscapePickerType;
@property (nonatomic, retain) IBOutlet UIDatePicker *landscapePickerFrom;
@property (nonatomic, retain) IBOutlet UIDatePicker *landscapePickerTo;
@property (nonatomic, retain) IBOutlet UIPickerView *portraitPickerTown;
@property (nonatomic, retain) IBOutlet UIPickerView *portraitPickerType;
@property (nonatomic, retain) IBOutlet UIDatePicker *portraitPickerFrom;
@property (nonatomic, retain) IBOutlet UIDatePicker *portraitPickerTo;
对于每个我只读的包装
- (UIPickerView *) pickerTown
{
if(self.landscapeView.superview)
{
return landscapePickerTown;
}else
{
return portraitPickerTown;
}
}
但是当我在肖像或风景中时,我试图说出
myHelper.selectedTown = [myHelper.towns objectAtIndex:[pickerTown selectedRowInComponent:0]];
我没有得到选定的值,只是数组中的第一个值。
数据添加如下:
if(pickerView == landscapePickerType || pickerView == portraitPickerType) {
return [myHelper.types objectAtIndex:row];
}else if(pickerView == landscapePickerTown || pickerView == portraitPickerTown){
return [myHelper.towns objectAtIndex:row];
}else
{
return @"";
}
和数组:
myHelper = [Helper sharedManager];
[myHelper.types addObject:@"None"];
[myHelper.types addObject:@"Food & Wine"];
[myHelper.types addObject:@"Test"];
[myHelper.towns addObject:@"None"];
[myHelper.towns addObject:@"Vanderbijlpark"];
[myHelper.towns addObject:@"Test"];
我在这里做错了什么?
答案 0 :(得分:1)
如果您只获得第一个元素,则表示[pickerTown selectedRowInComponent:0]
正在评估为零,但只有当pickerTown
为nil
时才会发生这种情况。这也很可能是由于插座没有连接。
但在这种情况下,我认为您是直接访问实例变量而不是方法返回的值。如果您对@synthesize
使用pickerTown
,请将其设为@dynamic
。并将语句更改为[self.pickerTown selectedRowInComponent:0]
以访问getter的值。