0

我在 tableView 中有一个普通单元格,当我想将它的文本对齐时,我使用:

if (cell == nil) {
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];        
     cell.textLabel.textAlignment = UITextAlignmentRight;           
}

但是现在我想使用UITableViewCell用于显示,detailTextLabel我也尝试将它再次对齐但没有任何反应:

if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyIdentifier"] autorelease];
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    cell.textLabel.textAlignment = UITextAlignmentRight;
    cell.detailTextLabel.textAlignment = UITextAlignmentRight;    
}
4

4 回答 4

3

UILabel如果要自定义它,请将您自己的作为子视图添加到单元格:

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyIdentifier"] autorelease];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.textLabel.textAlignment = UITextAlignmentRight;
UILabel *subLabel = [UILabel alloc] initWithFrame:CGRectMake(x,y,w,h)]; //put in the frame variables you desire
subLabel.textAlignment = UITextAlignmentRight;
subLabel.tag = 20;
subLabel.text = @"my text";
[cell.contentView addSubview:subLabel];
[subLabel release]; //dont call this if you are using ARC

...

然后您稍后访问标签:

[[cell.contentView viewWithTag:20] setText:@"new text"];

希望这可以帮助。

于 2012-08-30T18:55:46.600 回答
1

你有没有检查你的长度detailTextLabel是不是没有它的框架那么大?如果框架足够大以完全适合文本,那么它可能看起来UITextAlignmentRight不起作用。

于 2012-08-30T18:25:01.567 回答
0

尝试实现tableView:willDisplayCell:forRowAtIndexPath:委托方法并将您的重新对齐代码放在那里!

于 2012-08-30T17:38:58.617 回答
0

UITableViewCellStyleSubtitle表格单元格中的textLabeldetailTextLabel的框架是不可能简单的改变的。

最好将您的单元格子类化以进行自定义布局。但您也可以使用

performSelector:withObject:afterDelay:

在layoutSubviews之后更改 textLabel 框架的延迟为零:

[self performSelector:@selector(alignText:) withObject:cell afterDelay:0.0];

alignText:你可以重新定义textLabel / detalTextLabel框架。

在此处查看实施

于 2014-07-19T14:59:26.123 回答