我希望我的選擇器視圖可以顯示1 - 200,但我認爲這是太多的內存,如果我在這個視圖設置一個數組:如何優化iPhone中的選取器視圖?
self.myLargeView = [[NSArray alloc] initWithObjects:@"1 unit", @"2 units", .... ..., @"199 units" @"200 units", nil]; //code skipped
我怎樣才能減少應用程序的內存負載?有任何想法嗎?
我希望我的選擇器視圖可以顯示1 - 200,但我認爲這是太多的內存,如果我在這個視圖設置一個數組:如何優化iPhone中的選取器視圖?
self.myLargeView = [[NSArray alloc] initWithObjects:@"1 unit", @"2 units", .... ..., @"199 units" @"200 units", nil]; //code skipped
我怎樣才能減少應用程序的內存負載?有任何想法嗎?
如果你希望你的選擇器視圖只是顯示一個遞增的數字,那麼你可能會使用這樣的:
#define kPickerValuesAmount 200
#pragma mark -
#pragma mark UIPickerViewDataSource methods
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
return kPickerValuesAmount;
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
return [NSString stringWithFormat:@"%i unit%@", (row + 1), (row == 0 ? @"" : @"s")];
}
如果用戶只需從1到200中挑選一個數字,爲什麼不使用UISlider呢?
我希望用戶實際上可以選擇的號碼,我看到了蘋果的日期選擇器還可以允許用戶滾動很多項目。 – Tattat 2010-02-25 16:06:44
如果選擇器的行標題的形式爲「x unit(s)」,則可以在titleForRow方法中生成字符串,而不是預先分配字符串數組。 – DyingCactus 2010-02-25 16:18:24
即使每次調用'titleForRow'新的'NSString'對象時,它都能夠工作得足夠快。 – 2010-02-25 16:29:49