将textAlignment置于UITableViewCellStyleSubtitle中心的解决方法

时间:2011-03-18 04:37:25

标签: iphone objective-c ios4 uitableview

根据this question(以及许多谷歌搜索结果),当我们在表格视图中,并且我们将单元格设置为UITableViewCellStyleSubtitle时,我们被迫将文本对齐单元格标签位于左侧。

但是我希望我的表视图中的一行(实际上是行)对齐中心...显然这不起作用:

cell.textLabel.textAlignment = UITextAlignmentCenter;

所以我一直在想我应该做什么......我不确定如何干净利落地做。我能想到的最好的方法是更改​​这个特定的单元格,使单元格的样式为UITableViewCellStyleDefault,但我认为单元格属性是不可更改的。我能想到的另一种方法是继承UITableViewCell类,但这对于一个表视图单元来说似乎有点过分。你认为我应该怎样做才能让最后一排对齐中心?

编辑:对于那些对答案感兴趣的人:

static NSString *CellIdentifier = @"Cell";
static NSString *CellIdentifierDefault = @"CellDefault";

UITableViewCell *cell; // = [pTableView dequeueReusableCellWithIdentifier:CellIdentifier];  

  if (indexPath.row >= [data count])
        cell = [pTableView dequeueReusableCellWithIdentifier:CellIdentifierDefault];
    else
        cell = [pTableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil && indexPath.row < [data count]) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
    }
    else if(cell == nil && indexPath.row >= [data count]) { 
        //Use default style for the last cell.
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifierDefault] autorelease];
    }

3 个答案:

答案 0 :(得分:2)

@the_great_monkey:

您可以更改要进行此中心对齐的单元格的cellIdentifier

对于其他单元格,您应该保留一个公共cellIdentifier

然后当你这样做时

cell.textLabel.textAlignment  = UITextAlignmentCenter;
cell.detailTextLabel.textAlignment  = UITextAlignmentCenter;

然后,您只需要检查cellIdentifier是否是需要居中对齐的单元格的cell.textLabel.textAlignment = UITextAlignmentCenter;

如果是,则申请,

该单元格的

cell.detailTextLabel.textAlignment = UITextAlignmentCenter;和{{1}}。

希望这会对你有所帮助。

答案 1 :(得分:0)

从.xib加载单元格很容易,可以按照自己喜欢的方式排列单元格的子视图。遗憾的是,UITableViewCell的textLabel和detailTextLabel属性不是IBOutlet,因此您无法在IB中连接您想要用于这些属性的标签。

处理此问题的一种方法是将这些视图连接到控制器中的插座,并在-tableView:cellForRowAtIndexPath:中设置单元格时使用它们。如果您以后不需要更改单元格的内容,那就没问题。在这种情况下,您可以创建一个包含UITableViewCell的笔尖,设置文件所有者的类型以匹配您的控制器,然后根据需要设置单元格的子视图并将它们连接到文件所有者。有关详细信息,请参阅Loading Custom TableView Cells from Nib Files

另一种方法是创建一个UITableViewCell子类,该子类具有文本标签和详细信息标签的出口。然后执行与上面相同的操作,但使用您的子类而不是UITableViewCell。一旦创建了这个子类,如果你想在某些时候使用不同的布局,你可以将它与不同的.xibs一起使用。创建子类所需的工作很少,并且它成为一个有用且可重用的工具。

答案 2 :(得分:0)

cell.textLabel.textAlignment=UITextBorderStyleLine;