我在
中使用它- (UITableViewCell *)tableView:(UITableView *)atable cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UIImage *image = [[UIImage alloc] imageNamed:@"arrow.jpg"];
cell.imageView.image = image;
return cell;
}
cell.imageView.image正在抛出错误..
答案 0 :(得分:0)
我假设您的意思是运行时错误,因为该代码不会编译(因为未声明单元格)。
这一行:
UIImage *image = [[UIImage alloc] imageNamed:@"arrow.jpg"];
应该是:
UIImage *image = [UIImage imageNamed:@"arrow.jpg"];
imageNamed
是一个UIImage类方法,而不是实例方法。
修改强>
根据您的要求,将图像放在右侧而不是左侧,您可以尝试这样做:
UIImageView *iv = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrow.jpg"]];
cell.accessoryView = iv;
[iv release];
如果您的单元格布局需要比内置布局更灵活,则需要将自己的视图添加到cell.contentView或仅在IB中设计自定义单元格。
答案 1 :(得分:0)
我在一个正在开发的游戏中使用了这种方法。
您继承了UITableViewCell,然后以编程方式将UIImageView和UILabel添加到单元格中。这为您提供了一种自定义单元格外观的好方法。
- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier {
if (self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier]) {
// Initialization code
headerLabel = [[UILabel alloc]init];
headerLabel.textAlignment = UITextAlignmentLeft;
imageV = [[UIImageView alloc] init];
descriptionLabel.font = [UIFont fontWithName:@"Marker Felt" size:14];
descriptionLabel = [[UILabel alloc]init];
descriptionLabel.textAlignment = UITextAlignmentLeft;
descriptionLabel.font = [UIFont fontWithName:@"Marker Felt" size:11];
descriptionLabel.lineBreakMode = UILineBreakModeWordWrap;
descriptionLabel.numberOfLines = 0;
[self.contentView addSubview:headerLabel];
[self.contentView addSubview:descriptionLabel];
[self.contentView addSubview:imageV];
}
return self;
}
- (void)layoutSubviews {
[super layoutSubviews];
CGRect contentRect = self.contentView.bounds;
CGFloat boundsX = contentRect.origin.x;
CGRect frame;
frame= CGRectMake(boundsX+60 ,3, 200, 15);
headerLabel.frame = frame;
frame= CGRectMake(boundsX+60 ,18, 260, 39);
descriptionLabel.frame = frame;
frame= CGRectMake(boundsX+3 , 3, 54, 54);
imageV.frame = frame;
}
此外,您还必须更改UITableView类中的方法:
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *CellIdentifier = @"Cell";
AchievementCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[AchievementCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
[cell returnCellAtIndex:indexPath.row];
[cell returnImageAtIndex:indexPath.row];
return cell;
}
随意提出有关代码的更多问题:)
答案 2 :(得分:0)
使用此.. ..
- (UITableViewCell *)tableView:(UITableView *)atable cellForRowAtIndexPath:(NSIndexPath *)indexPath {
cell.imageView.image = [UIImage imageNamed:@"arrow.jpg"];
return cell;
}