我想知道是否可以调整UITableViewCell的宽度。 我想在它的左边放一个图像(就像地址簿中的联系人视图)。 我发现了一篇帖子here,提供了我想要完成的内容。我还要确认这篇文章的答案。
答案 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 的四种风格是:
要将图像嵌入到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
方法。