这就是我需要做的事情:
将66px x 66px图像加载到MainViewController表中的表格单元格中。 每个TableCell都有一个独特的图像。
但是怎么样?我们会使用cell.image
吗?
cell.image = [UIImage imageNamed:@"image.png"];
若然,在哪里?是否需要if / else语句?
要加载每个单元格的标签,MainViewController使用NSDictionary和NSLocalizedString,如下所示:
//cell one
menuList addObject:[NSDictionary dictionaryWithObjectsAndKeys:
NSLocalizedString(@"PageOneTitle", @""), kTitleKey,
NSLocalizedString(@"PageOneExplain", @""), kExplainKey, nil]];
//cell two
menuList addObject:[NSDictionary dictionaryWithObjectsAndKeys:
NSLocalizedString(@"PageOneTitle", @""), kTitleKey,
NSLocalizedString(@"PageOneExplain", @""), kExplainKey, nil]];
...
// this is where MainViewController loads the cell content
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
MyCustomCell *cell = (MyCustomCell*)[tableView dequeueReusableCellWithIdentifier:kCellIdentifier];
if (cell == nil)
{
cell = [[[MyCustomCell alloc] initWithFrame:CGRectZero reuseIdentifier:kCellIdentifier] autorelease];
}
...
// MyCustomCell.m adds the subviews
- (id)initWithFrame:(CGRect)aRect reuseIdentifier:(NSString *)identifier
{
self = [super initWithFrame:aRect reuseIdentifier:identifier];
if (self)
{
// you can do this here specifically or at the table level for all cells
self.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
// Create label views to contain the various pieces of text that make up the cell.
// Add these as subviews.
nameLabel = [[UILabel alloc] initWithFrame:CGRectZero]; // layoutSubViews will decide the final frame
nameLabel.backgroundColor = [UIColor clearColor];
nameLabel.opaque = NO;
nameLabel.textColor = [UIColor blackColor];
nameLabel.highlightedTextColor = [UIColor whiteColor];
nameLabel.font = [UIFont boldSystemFontOfSize:18];
[self.contentView addSubview:nameLabel];
explainLabel = [[UILabel alloc] initWithFrame:CGRectZero]; // layoutSubViews will decide the final frame
explainLabel.backgroundColor = [UIColor clearColor];
explainLabel.opaque = NO;
explainLabel.textColor = [UIColor grayColor];
explainLabel.highlightedTextColor = [UIColor whiteColor];
explainLabel.font = [UIFont systemFontOfSize:14];
[self.contentView addSubview:explainLabel];
//added to mark where the thumbnail image should go
imageView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 66, 66)];
[self.contentView addSubview:imageView];
}
return self;
}
答案 0 :(得分:6)
如果图像对于每个单元格都是相同的,即它是该类型单元格的一部分,则可以使用self.image = [UIImage imageNamed:“blabla”];
否则,如果不同单元格的图像不同,将它放在tableView中会更合乎逻辑:cellForRowAtIndexPath:
答案 1 :(得分:3)
是的,不推荐使用cell.image。在默认的TableViewCell中使用imageview.image。我不确定为什么自定义单元格需要执行标准tableviewcell已经执行的操作(标题,副标题和使用UITableViewStyleSubtitle的图像)
答案 2 :(得分:1)
现在有效。你是对的,Seventoes,把它放在tableView:cellForRowAtIndexPath:
indexPath.row
就是我错过的。工作结果如下:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
MyCustomCell *cell = (MyCustomCell*)[tableView dequeueReusableCellWithIdentifier:kCellIdentifier];
if (cell == nil)
{
cell = [[[MyCustomCell alloc] initWithFrame:CGRectZero reuseIdentifier:kCellIdentifier] autorelease];
}
if (indexPath.row == 1)
{
cell.image = [UIImage imageNamed:@"foo.png"];
}
else if (indexPath.row == 2)
cell.image = [UIImage imageNamed:@"bar.png"];
}
...
else
{
cell.image = [UIImage imageNamed:@"lorem.png"];
}
return.cell;
}
答案 3 :(得分:1)
更好的方法是if-else混乱是按正确的顺序将你的图像推送到NSMutableArray,然后只使用
cell.image = [myImages objectAtIndex:indexPath.row];