我有一个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