Разное изображение в каждой ячейке UITableview - PullRequest
3 голосов
/ 05 декабря 2009

Я хочу установить другое изображение для каждой ячейки моего табличного представления. Я не знаю, как это сделать - пожалуйста, помогите мне.

Ответы [ 2 ]

9 голосов
/ 05 декабря 2009
  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];
    

После шага 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;
}
5 голосов
/ 05 декабря 2009

Вы можете создать пользовательскую ячейку с UIImageView в ней, но самый простой способ - установить встроенное представление изображения UITableViewCell по умолчанию в вашем делегате табличного представления -cellForRowAtIndexPath. Примерно так:

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

[[cell imageView] setImage:image];

Где изображение - это UIImage, созданный вами путем загрузки с URL-адреса или из локального пакета приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...