根据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];
}
答案 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;