假设我有一个字符串数组我在tableView中显示以下数据:
等级名称项目
第一个字段是一致的长度(4),但是中间字段是可变的,所以我希望能够做的是以某种方式分割单元格以使Item正确对齐。有一个简单的方法吗?
等级名称项目
所以
Sarg Bobmarley magic
Capt Huf axe
Peon Yumkru sword
变为
Sarg Bobmarley magic
Capt Huf axe
Peon Yumkru sword
细胞方法:
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
// Set up the cell...
TableViewPracticeAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
cell.textLabel.text = [[appDelegate theArray] objectAtIndex:indexPath.row];
cell.textLabel.font = [UIFont boldSystemFontOfSize:15];
}
任何想法或想法!
答案 0 :(得分:3)
您必须制作自定义单元格。 iOS中没有NSAttributedString(更新:iOS 6带来NSAttributedString)。这很简单,这是一个例子:
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
UILabel *rank = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, 100, 20];
//Mess around with the rects, I am just merely guessing.
[rank setTag:5];
[[self contentView] addSubView:rank];
[rank release];
UILabel *item = [[UILabel alloc] initWithFrame:CGRectMake(110, 5, 220, 20];
//Important
[item setTextAlignment:UITextAlignmentRight];
[item setTag:6];
[[self contentView] addSubView:item];
[item release];
}
UILabel *rank = (UILabel *)[cell viewWithTag:5];
UILabel *item = (UILabel *)[cell viewWithTag:6];
//And now set their texts...
}
答案 1 :(得分:2)
对于其他以后会偶然发现并尝试使用上述答案的人......首先尝试:UITableViewCellStyleValue1
这是iOS预定义的表格单元格样式,主标签为黑色(左对齐),辅助文本右侧为蓝色(右对齐)它们甚至可以是不同的字体。例如:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if( cell == nil ) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"Cell1"] autorelease];
cell.accessoryType = UITableViewCellAccessoryNone;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.textLabel.font = [UIFont fontWithName:@"myFont" size:30];
cell.textLabel.adjustsFontSizeToFitWidth = YES;
}
cell.accessoryView = [Some widget you want on the right... or not];
cell.textLabel.text = @"Some Left justified string in whatever font here (BLACK)";
cell.detailTextLabel.text = @"Some right justified string here... in whatever font you want (BLUE)";
return cell;
}
这就是它...... :)。
答案 2 :(得分:1)
UITableViewCell
还有一个detailTextLabel
属性,我相信默认情况下该属性是正确的。否则,您可以在代码中或使用具有两个标签的Interface Builder创建自定义单元格,其中一个标签具有右对齐文本。