我有一个主视图,其中有一个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"];


我在这里做错了什么?

最佳答案

如果仅获取第一个元素,则表明[pickerTown selectedRowInComponent:0]总是评估为零,只有当pickerTownnil时才会发生。再次可能是由于插座未连接。

但是在这种情况下,我认为您是直接访问实例变量,而不是方法返回的值。如果将@synthesize用于pickerTown,请将该@dynamic设置为。并将语句更改为[self.pickerTown selectedRowInComponent:0]以访问getter的值。

10-06 13:10