1

我有一个带有 UIPickerView (三列)和一个按钮的小型 iOS 转换器,允许交换第一列和第三列(我交换两个对应的 UILabel 数组)

iOS4.3 iphone模拟器下,一切正常。当我使用 iOS 5.1 模拟器时,会出现显示问题(使用 LLDB 显示 iVar 时也出现问题,而使用 GDB 会消失):

交换第一个和第三个数组后,6 个 UILabel 在 UIPickerView 的第一列(数组:pickerColumn1)中处于活动状态,但其中三个文本标签未显示...

用于管理 UIPickerView 三列的三个数组的声明:

// 文件:MesureViewController.h

@interface MesureViewController : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource> {
IBOutlet UIPickerView *pickerView;

NSArray *pickerColumn1;
NSArray *pickerColumn2;
NSArray *pickerColumn3;

// (...)
}
@property (nonatomic, retain) NSArray *pickerColumn1;
@property (nonatomic, retain) NSArray *pickerColumn2;
@property (nonatomic, retain) NSArray *pickerColumn3;

// 文件:MesureViewController.m

@implementation MesureViewController
@synthesize pickerColumn1;
@synthesize pickerColumn2;
@synthesize pickerColumn3;

UiPickerView 数组初始化(在 viewDidLoad 调用的方法中):

NSArray *contenants=[[NSArray alloc] initWithObjects:c_cafe, c_dessert, c_soupe, tasse, gtasse, bol, v_liqueur,v_moutarde, v_grand, nil];
NSArray *ingredients=[[NSArray alloc] initWithObjects: farine, sucre, beurre, marga, huile, creme, rape, fecule, semoule, f_sec_pile, sel, cereale, fruitfrais, miel, siropErable, cacao, cafe, riz, liquide , nil];
NSArray *mesures=[[NSArray alloc] initWithObjects: kilo, gramme, litre, dl, cl, ml, nil];
self.pickerColumn1=contenants; // 9 objects
self.pickerColumn2=ingredients; // 19 objects
self.pickerColumn3=mesures; // 6 objects
[contenants release];
[ingredients release];
[mesures release];

用于交换第一个和第三个数组的代码

- (IBAction) swapUnits { // swap first and third arrays

NSArray *tmp=[self.pickerColumn1 retain];
self.pickerColumn1=self.pickerColumn3;
self.pickerColumn3=tmp;

[tmp release];
// (...)
}

任何想法?谢谢!

丹尼斯

4

0 回答 0