我正在尝试为我们的应用创建设置。我不确定这里发生了什么。我有一个UITableViewSyleGrouped,在表的每个部分,有1行。对于我的特定行,它显示了该人的姓名。如果单击它,则会推送到具有可供选择的人员列表的新tableView,然后当您弹回时,标签会更新,但当我从较小的名称变为更大的名称时,标签会被截断。我正在尝试为我们的应用创建设置。一些字段看起来像:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSUInteger row = [indexPath row];
if (tableView == _settingsTableView) {
UITableViewCell *cell = nil;
NSNumber *aSection = [_tableArray objectAtIndex:indexPath.section];
if ([aSection integerValue] == SOUNDS)
{
cell = [tableView dequeueReusableCellWithIdentifier:@"SwitchCell"];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"SwitchCell"] autorelease];
}
cell.textLabel.text = @"Sounds";
cell.selectionStyle = UITableViewCellSelectionStyleNone;
UISwitch *switchView = [[UISwitch alloc] initWithFrame:CGRectZero];
cell.accessoryView = switchView;
[switchView setOn:[[Settings sharedInstance] playSounds] animated:NO]; // initialize value from Settings
[switchView addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged];
[switchView release];
}
else if ([aSection integerValue] == PERSON) {
cell = [tableView dequeueReusableCellWithIdentifier:@"PersonCell"];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"PersonCell"] autorelease];
}
Person *p = [_personArray objectAtIndex:row];
cell.textLabel.text = [NSString stringWithFormat:@"%@ %@", p.firstName, p.lastName];
NSLog(@"cL: %@", NSStringFromCGRect(cell.textLabel.frame));
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
return cell;
}
我的PERSON部分为用户提供了更改人物的功能。 didSelectRowAtIndexPath中的代码是
else {
Person *p = [_personArray objectAtIndex:row];
NSUInteger oldRow = [_lastIndexPath row];
if (oldRow != row) {
dmgr.currentPerson = p;
// Put checkmark on newly selected cell
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.accessoryType = UITableViewCellAccessoryCheckmark;
// Remove checkmark on old cell
UITableViewCell *oldCell = [tableView cellForRowAtIndexPath:_lastIndexPath];
oldCell.accessoryType = UITableViewCellAccessoryNone;
[_settingsTableView deselectRowAtIndexPath:_lastIndexPath animated:YES];
self.LastIndexPath = indexPath;
// Update the cell
NSIndexPath *path = [NSIndexPath indexPathForRow:0 PERSON];
UITableViewCell *theCell = [_settingsTableView path];
theCell.textLabel.text = [NSString stringWithFormat:@"%@ %@", p.firstName, p.lastName];
[theCell setNeedsDisplay];
NSLog(@"ceLL: %@", NSStringFromCGRect(theCell.textLabel.frame));
}
}
在我点击标签之前,标签会被截断。 (例如John D ......而不是John Doe)。为什么标签没有更新?
我试着看框架,我不确定这是否与它有关。我的输出是:
cL: {{0, 0}, {0, 0}}
ceLL: {{10, 11}, {76, 21}}
答案 0 :(得分:0)
UITableViewCell的textLabel字段是常规UILabel。您可以设置此属性以使其缩小文本以适合:
theCell.textLabel.adjustsFontSizeToFitWidth = YES;
您还可以设置最小字体大小
theCell.textLabel.minimumFontSize = whatever
查看UILabel上的文档,它将对您有所帮助。