2011-07-18 11 views
0

私は、ラスタビューのサブビューとして読み込まれるlandscapeviewとportraitviewを持つメインビューを持っています。ランドスケープビューとportraitviewには、それらにリンクされたUIPickerViewオブジェクトがあります。私のソースでは、それらをすべてプロパティとして持っており、私はまた、風景とポートレートのピッカーのラッパーを持っています。彼らは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"]; 

は、私がここで間違って何をやっているの?

答えて

1

最初の要素だけを取得している場合は、[pickerTown selectedRowInComponent:0]が常にゼロに評価されていることを示します。pickerTownnilの場合にのみ発生します。これは、コンセントが接続されていないために起こりそうです。

しかし、この場合、メソッドが返す値ではなくインスタンス変数に直接アクセスしていると思います。 pickerTown@synthesizeを使用している場合は、@dynamicとしてください。また、ステートメントを[self.pickerTown selectedRowInComponent:0]に変更してゲッターの値にアクセスしてください。

+0

ありがとうございました – Armand

関連する問題