是否可以调整UITableViewCell的宽度?

时间:2009-06-25 10:19:56

标签: iphone uitableview width

我想知道是否可以调整UITableViewCell的宽度。 我想在它的左边放一个图像(就像地址簿中的联系人视图)。 我发现了一篇帖子here,提供了我想要完成的内容。我还要确认这篇文章的答案。

3 个答案:

答案 0 :(得分:2)

OS3.0在API中有一些样式选项可以做你想要的。

或者,您可以在Interface Builder中创建一个完全自定义的表格视图单元格,例如在我的一个应用程序中,我在我的cellForRowAtIndexPath中执行此操作:

PlaceViewCell *cell = (PlaceViewCell*) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [self createNewPlaceCellFromNib];
}

这是从NIB中挖掘出来的方法

- (PlaceViewCell*) createNewPlaceCellFromNib {
    NSArray* nibContents = [[NSBundle mainBundle]
                            loadNibNamed:@"PlaceCell" owner:self options:nil];
    NSEnumerator *nibEnumerator = [nibContents objectEnumerator];
    PlaceViewCell* placeCell = nil;
    NSObject* nibItem = nil;
    while ( (nibItem = [nibEnumerator nextObject]) != nil) {
        if ( [nibItem isKindOfClass: [PlaceViewCell class]]) {
            placeCell = (PlaceViewCell*) nibItem;
            if ([placeCell.reuseIdentifier isEqualToString: @"Place" ]) {
                //NSLog(@"PlaceCell - we have a winner!");
                break; // we have a winner
            } else {
                placeCell = nil;
                NSLog(@"PlaceCell is nil!");
            }
        }
    }
    return placeCell;
}

然后,您可以直接在Interface Builder中创建UITableViewCell子类。

答案 1 :(得分:0)

IMO你不能改变UITableViewCell的宽度,但幸运的是你不需要。 Apple提供了四种默认样式,可以在单元格的左边框显示一个图像(如果要将其放在其他位置,则必须创建自定义布局)。

UITableViewCellStyle 的四种风格是:

  • UITableViewCellStyleDefault
  • UITableViewCellStyleSubtitle
  • UITableViewCellStyleValue1
  • UITableViewCellStyleValue2

要将图像嵌入到UITableViewCell中,您应该阅读Apples Developer Connection网络上的TableView编程指南:Using Cell Objects in Predefined Styles

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyIdentifier"];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
    }
    NSDictionary *item = (NSDictionary *)[self.content objectAtIndex:indexPath.row];
    cell.textLabel.text = [item objectForKey:@"mainTitleKey"];
    cell.detailTextLabel.text = [item objectForKey:@"secondaryTitleKey"];
    NSString *path = [[NSBundle mainBundle] pathForResource:[item objectForKey:@"imageKey"] ofType:@"png"];
    UIImage *theImage = [UIImage imageWithContentsOfFile:path];
    cell.imageView.image = theImage;
    return cell;
}

答案 2 :(得分:0)

您无需修改​​单元格的宽度。你真正需要的是使单元格看起来像它有不同的宽度(例如通过修改其可见子视图的宽度)。

不幸的是,您的链接不起作用,所以我不能更具体。

您还可以尝试在tableView:indentationLevelForRowAtIndexPath:协议中查看UITableViewDelegate方法。