我正在尝试在单元格中构建带有字幕文本的表格视图
问题是当我尝试将字幕文本的对齐设置为右边时它不起作用,但它与主文本一起正常工作
这是我的代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"CustomCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
[[cell textLabel] setTextAlignment:UITextAlignmentRight];
[[cell detailTextLabel] setTextAlignment:UITextAlignmentRight];
cell.textLabel.text = [array objectAtIndex:indexPath.row];
cell.textLabel.font = [UIFont systemFontOfSize:18];
cell.detailTextLabel.text = @"test";
return cell;
}
当我删除字幕代码时,对齐工作正常
任何想法?
答案 0 :(得分:5)
确定如此子类UITableView Cell并使用init自定义标签。您可以覆盖layoutSubviews并将标签移到右侧:
- (void)layoutSubviews {
[super layoutSubviews];
self.textLabel.frame = CGRectMake(0.0, 68.0, 80.0, self.frame.size.height);
self.detailTextLabel.frame = CGRectMake(0.0, 68.0, 120.0, self.frame.size.height);
}
这些只是示例值,因此您可以了解这个想法。
答案 1 :(得分:0)
为什么要初始化单元格两次:
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
您可以使用两个标签创建自定义单元格,并为这些标签提供对齐。按照以下步骤操作:
1.添加UITableViewCell的新文件子类saylateCustomCell。 2.在labelCustomCell中创建两个标签,分别为label1和label2。 3.在initWithStyle方法中分配这些标签并提供对齐。 4.在layoutSubViews方法中为这些标签指定框架。 5.在cellForRowAtIndexPath方法中编写以下代码:
static NSString *CellIdentifier = @"DataEntryCell";
labelCustomCell *cell = (labelCustomCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[labelCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
cell.label1.text = [array objectAtIndex:indexPath.row];
cell.label1.font = [UIFont systemFontOfSize:18];
cell.label2.text = @"test";
不要忘记导入labelCustomCell。