我有一個UITableView
在我正在刷新的iPhone應用程序中(通過在動作方法中調用[self.tableView reloadData]
動態嵌入到其中一個UITableView單元中的UISegmentedControl
。以更新其中一個單元格的文本值UITableView重新加載數據/刷新(可能的重複問題)
但是,下面的代碼似乎產生了一個不需要的副作用,看來每次UITableView刷新它時都會創建一個新的UISegmentedControl實例(可能還有圖像 - 我不確定)
我注意到這一點的唯一原因是,每次刷新一個裸露在UISegmentedControl周圍開始形成可感知的邊界,應用程序明顯減慢。我將非常感謝任何有關我目前困境的建議/代碼解決方案。
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}
NSUInteger section = indexPath.section;
NSUInteger row = indexPath.row;
// Set up the cell...
//populates the personal info section
if (section == kPersonalInfoAddSection) {
if (row == kNameRow) {
//Other code irrelevant to this question was removed for the sake of clarity
}
else if(row == kHeightRow) {
cell.imageView.image = [UIImage imageNamed:@"tableview_height_label.png"];
//THIS IS THE TEXT I'M TRYING TO UPDATE
cell.textLabel.text = [Formatter formatHeightValue:mainUser.heightInMM forZone:self.heightZone];
cell.detailTextLabel.text = REQUIRED_STRING;
}
}
//populates the units section
if (section == kUnitsSection) {
if (row == kHeightUnitsRow) {
NSArray *heightUnitsSegments = [[NSArray alloc] initWithObjects:FT_AND_IN_STRING, M_AND_CM_STRING, nil];
UISegmentedControl *heightUnitControl = [[UISegmentedControl alloc] initWithItems:heightUnitsSegments];
CGRect segmentRect = CGRectMake(90, 7, 200, 30);
[heightUnitControl setFrame:segmentRect];
//[heightUnitControl setSelectedSegmentIndex:0];
[heightUnitControl addTarget:self action:@selector(heightSegmentClicked:) forControlEvents:UIControlEventValueChanged];
heightUnitControl.tag = kHeightSegmentedControlTag;
cell.textLabel.text = @"Height:";
cell.detailTextLabel.text = @"(units)";
[cell.contentView addSubview:heightUnitControl];
[heightUnitsSegments release];
[heightUnitControl release];
}
else if(row == kWeightUnitsRow) {
//Other code irrelevant to this question was removed for the sake of clarity
}
}
return cell;
}
謝謝大家提前!
更好的是,創建一個自定義的UITableViewCell子類並使用它。如果您有更復雜的需求,沒有理由限制自己使用默認的單元格類型。 – TechZen 2010-01-05 20:08:07
感謝您的回答。我只是想知道如何定製UITableViewCells在這種特殊情況下會有所幫助(我對iPhone開發相對較新)。 此外,似乎使用自定義單元格意味着分組視圖中單元格的圓角外觀消失(由方形conrners取代)。 – Urizen 2010-01-06 13:53:10