我有一个tableView,用于检查是否已打开一个单元格:如果是,则显示一个空单元格(无图像),如果不是,则显示一个小图像,表明该单元格尚未被读取(打开)
现在,我的应用程序中有“收藏夹”功能,我想在tableView中显示一个小图像,表明该单元格是最受欢迎的,因此用户可以快速识别那些添加到收藏夹中的图像。
我试图用cellForRowAtIndexPath
方法
NSDictionary *item = [rows objectAtIndex:indexPath.row];
cell.textLabel.text = [item objectForKey:@"name"];
if ([[item valueForKey:@"isRead"] boolValue] == NO) {
cell.imageView.image = [UIImage imageNamed:@"unread.png"];
} else {
if ([[item valueForKey:@"isFav"] boolValue] == YES){
cell.imageView.image = [UIImage imageNamed:@"favorite.png"];
}
else{
cell.imageView.image = nil;
}
cell.imageView.image = nil;
}
其中name
,isRead
,isFav
是从存储所有数据的plist获取的值。
当然,当用户打开一个单元格时,“未读”的图像就会消失。
问题是现在我想要显示未读和收藏。在上面的代码中,它只显示那些未读的。
我该怎么做才能做到这一点?我可能错过了一些愚蠢的东西!
答案 0 :(得分:1)
Cell只有一个imageView。 试试这个
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
UIImageView *imageView1=[[UIImageView alloc]init];
imageView1.frame=CGRectMake(0, 0,50,cell.frame.size.height);
imageView1.tag=1000;
[cell.contentView addSubview:imageView1];
UIImageView *imageView2=[[UIImageView alloc]init];
imageView2.frame=CGRectMake(cell.frame.size.width-50, 0, 50,cell.frame.size.height);
imageView2.tag=2000;
[cell.contentView addSubview:imageView2];
}
UIImageView *imageView=(UIImageView *)[cell.contentView viewWithTag:1000];
imageView.backgroundColor=[UIColor redColor];
imageView.image=[UIImage imageNamed:@"unread.png"];
UIImageView *imageView2=(UIImageView *)[cell.contentView viewWithTag:2000];
imageView2.backgroundColor=[UIColor greenColor];
imageView2.image=[UIImage imageNamed:@"favorite"];
答案 1 :(得分:1)
为什么不仅仅是UITableViewCell的子类并按照您想要的方式进行布局?这很容易做到。我做了一个项目,展示了如何做到这一点。
简要总结:
创建一个名为MyTableViewCell
或其他的新类。
MyTableViewCell.h:
#import <UIKit/UIKit.h>
@interface MyTableViewCell : UITableViewCell
@property (nonatomic, strong) IBOutlet UIImageView *image1;
@property (nonatomic, strong) IBOutlet UIImageView *image2;
@end
MyTableViewCell.m:
#import "MyTableViewCell.h"
@implementation MyTableViewCell
@synthesize image1, image2;
@end
在包含TableView
的VC中导入该类。将TableViewCell
的父类更改为MyTableViewCell
(在Interface Builder中)。确保重用标识符已正确命名,然后在cellForRowAtIndexPath
:
static NSString *CellIdentifier = @"TwoImageCell";
MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
[cell.image1 setImage:[UIImage imageNamed:@"lion.png"]];
[cell.image2 setImage:[UIImage imageNamed:@"mtlion.png"]];
// Configure the cell...
return cell;
答案 2 :(得分:0)
默认实现UITableViewCell
一次不支持两个图像。您需要为UITableViewCell
创建子类,并为要显示的图像之一添加自己的UIImageView
。
答案 3 :(得分:0)
感谢亲朋好友的帮助,我最终做了像
这样的事情int state = 0;
if ([[item valueForKey:@"isRead"] boolValue] == NO)
state += 1;
if ([[item valueForKey:@"isFav"] boolValue] == YES)
state += 2;
switch (state){
case 1:
cell.imageView.image = [UIImage imageNamed:@"unread.png"];
break;
case 2:
cell.imageView.image = [UIImage imageNamed:@"favorite.png"];
break;
case 3:
cell.imageView.image = [UIImage imageNamed:@"unreadAndFavorite.png"];
break;
default:
cell.imageView.image = nil;
break;
}
答案 4 :(得分:-2)
在tableview单元格中添加两个图像视图。你必须在cellForRowAtIndexPath中实现下面的代码(默认情况下,ow有一个图像视图)。在此,您必须采用两个子视图并将其添加为内容视图。
-(UITableViewCell *)tableView:(UITableView *)tableViewL cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableViewL dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
UIImageView *imageView1=[[UIImageView alloc]init];
imageView1.frame=CGRectMake(0, 0,50,cell.frame.size.height);
imageView1.tag=1000;
[cell.contentView addSubview:imageView1];
UIImageView *imageView2=[[UIImageView alloc]init];
imageView2.frame=CGRectMake(cell.frame.size.width-50, 0, 50,cell.frame.size.height);
imageView2.tag=2000;
[cell.contentView addSubview:imageView2];
}
UIImageView *imageView=(UIImageView *)[cell.contentView viewWithTag:1000];
imageView.image=[UIImage imageNamed:@"myImage1.png"];
UIImageView *imageView2=(UIImageView *)[cell.contentView viewWithTag:2000];
imageView2.image=[UIImage imageNamed:@"myImage2.png"];
return cell;
}