将图标图像添加到UITableview数组

时间:2012-02-07 13:09:30

标签: objective-c ios uitableview uiimage

我想在下面的UITableview数组中添加一个不同的图标图像,即image1.png,image2.png等。真的需要有人帮忙。提前谢谢。

{
self = [super init];
if (self) {
    // Custom initialization
    self.tableData = [NSArray arrayWithObjects:@"Region", @"Subregion", @"Country",      @"County", @"City", @"District", nil];

    CGRect frame = self.view.bounds;
    frame.size.height -= 100;
    self.tableView = [[UITableView alloc] initWithFrame:frame style:UITableViewStyleGrouped];
    [self.tableView setBackgroundColor:[UIColor clearColor]];
    [self.tableView setDataSource:self];
    [self.tableView setDelegate:self];
    [self.tableView setScrollEnabled:NO];

    [self.view addSubview:self.tableView]; 
}
return self;
}

3 个答案:

答案 0 :(得分:4)

使用cellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    }

    // Configure the cell.
    cell.textLabel.text = @"cell text";
    cell.imageView.image = [UIImage imageNamed:@"image1.png"];
    return cell;
}

答案 1 :(得分:4)

您可以创建另一个保留图片名称的数组

self.tablePicture = [NSArray arrayWithObjects:@"pic1.png", @"pic2.png", @"Country.png", nil];

按照您希望它们显示的顺序,并在cellForRowAtIndexPath中写入

cell.imageView.image = [UIImage imageNamed:[tablePicture objectAtIndex:indexPath.row]];

答案 2 :(得分:1)

您可以利用oop样式创建自定义类(例如DataItem)并初始化使用DataItem元素显示的数组。换句话说,您可以创建一个包含名称和图像元素的模型。

例如:

//.h
@interface DataItem : NSObject
{
   NSString* name;
   NSString* thunbmail;
}

@property (nonatomic, copy) NSString* name;
@property (nonatomic, copy) NSString* thunbmail;

- (id)initWithName:(NSString*)dName withThunbmail:(NSString*)dThunbmail;

@end

//.m
@implementation DataItem

@synthesize name;
@synthesize thunbmail;

- (id)initWithName:(NSString*)dName withThunbmail:(NSString*)dThunbmail
{
   if(self = [super init])
   {
      name = [dName copy]; // release in dealloc!!
      thunbmail = [dThunbmail copy]; // release in dealloc!!
   }
   return self;
}

// create dealloc here

@end

现在你可以初始化一个项目并将其添加到数组中(最好有一个NSMutableArray),如下所示:

DataItem* di = [[DataItem alloc] initWithName:@"name" withThunbmail:@"image.png"];

NSMutableArray* arrData = [[NSMutableArray alloc] init];
[arrData addObject:di];

// add other object here

self.tableData = arrData;

// release memory...

然后在cellForRowAtIndexPath

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    }

    // Configure the cell..

    DataItem* di = (DataItem*)[self.tableData objectAtIndex:[indexPath row]];
    cell.textLabel.text = di.name;
    cell.imageView.image = [UIImage imageNamed:di.thunbmail];

    return cell;
}

这是将您的内容封装在单个班级模型中的一种优雅方式。

希望它有所帮助。

P.S。检查代码。我是手写的。