UITableview的每个单元格中的不同图像

时间:2009-12-05 05:31:08

标签: iphone objective-c uitableview uiimage

我想为表格视图的每个单元格设置不同的图像。我不知道怎么做 - 请帮助我。

2 个答案:

答案 0 :(得分:9)

  1. 创建一个属性来存储不同图像名称的数组。

    在标题(.h)文件中:

    @interface MyViewController : UITableViewController {
        NSArray *cellIconNames;
        // Other instance variables...
    }
    @property (nonatomic, retain) NSArray *cellIconNames;
    // Other properties & method declarations...
    @end
    

    在您的实施(.m)文件中:

    @implementation MyViewController
    @synthesize cellIconNames;
    // Other implementation code...
    @end
    
  2. viewDidLoad方法中,将cellIconNames属性设置为包含不同图像名称的数组(按照要显示的顺序):

    [self setCellIconNames:[NSArray arrayWithObjects:@"Lake.png", @"Tree.png", @"Water.png", @"Sky.png", @"Cat.png", nil]];
    
  3. tableView:cellForRowAtIndexPath:表格视图数据源方法中,获取与单元格行对应的图像名称:

    NSString *cellIconName = [[self cellIconNames] objectAtIndex:[indexPath row]];
    

    然后创建一个UIImage对象(使用cellIconName指定图片)并将单元格的imageView设置为此UIImage对象:

    UIImage *cellIcon = [UIImage imageNamed:cellIconName];
    [[cell imageView] setImage:cellIcon];
    
  4. 在第3步之后,您的tableView:cellForRowAtIndexPath:方法看起来像这样:

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
        /* Initialise the cell */
    
        static NSString *CellIdentifier = @"MyTableViewCell";
    
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        }
    
        /* Configure the cell */
    
        NSString *cellIconName = [[self cellIconNames] objectAtIndex:[indexPath row]];
        UIImage *cellIcon = [UIImage imageNamed:cellIconName];
        [[cell imageView] setImage:cellIcon];
    
        // Other cell configuration code...
    
        return cell;
    }
    

答案 1 :(得分:5)

您可以在其中创建包含UIImageView的自定义单元格,但最简单的方法是在-cellForRowAtIndexPath表视图委托中设置默认UITableViewCell的内置图像视图。像这样:

UITableViewCell *cell = [tableView 
                              dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
    cell = [[UITableViewCell alloc] initWithFrame:CGRectZero];
    //... other cell initializations here
}

[[cell imageView] setImage:image];

其中image是您通过从URL或本地应用程序包加载而创建的UIImage。