我有一个带有 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];
// (...)
}
任何想法?谢谢!
丹尼斯