Как я могу настроить изображение раскрытия аксессуаров в UITableViewCell?

StackOverflow https://stackoverflow.com/questions/403748

  •  03-07-2019
  •  | 
  •  

Вопрос

Я хотел бы использовать пользовательскую версию стандартного изображения аксессуара для раскрытия информации в моем UITableView.Как я могу это сделать?Я надеюсь, что подкласс UITableViewCell не является необходимым для чего-то такого базового.

Это было полезно?

Решение

Вам нужно будет создать пользовательское представление и назначить его accessoryView собственность компании UITableViewCell объект.Что -то вроде:

myCell.accessoryView = [[ UIImageView alloc ] 
                       initWithImage:[UIImage imageNamed:@"Something" ]];

Другие советы

- (UITableViewCell *)tableView:(UITableView *)tView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    UIImage *indicatorImage = [UIImage imageNamed:@"Arrow.png"];
    cell.accessoryView =[[[UIImageView alloc]  initWithImage:indicatorImage] autorelease];


    return cell;
}

ну, я делаю это с помощью кода справки, приведенного выше

Я столкнулся с той же проблемой, что и Грег - представление аксессуаров не отслеживается (если вы используете UIImageView)

Я решил это следующим образом:

UIImage * image = [ UIImage imageNamed:@"disclosure-button-grey.png" ] ;
UIControl * c = [ [ UIControl alloc ] initWithFrame:(CGRect){ CGPointZero, image.size } ] ;

c.layer.contents = (id)image.CGImage ;
[ c addTarget:self action:@selector( accessoryTapped: ) forControlEvents:UIControlEventTouchUpInside ] ;
cell.accessoryView = c ;
[ c release ] ;

Существует хороший пример из Apple показываю, как использовать UIControl для выполнения такого рода настройки accessoryView.

Переопределяющий - (void)drawRect:(CGRect)rect в UIControl это не самый простой способ, но он дает вам большую гибкость при создании красивых видов аксессуаров.

enter image description here

Я бы сделал это следующим образом:

UIImageView *chevronImgVw = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"chevron_accessory_vw_img.png"]];
chevronImgVw.frame = CGRectMake(cell.accessoryView.frame.origin.x, cell.accessoryView.frame.origin.y, 10, 20);
cell.accessoryView = chevronImgVw;

Пожалуйста, попробуйте это, прежде чем голосовать против!Потому что на данный момент у него 2 положительных и 2 отрицательных голоса!

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

[cell setAccessoryView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrowBtn"]]];

Надеюсь, кто-нибудь сочтет это полезным.

ПРИМЕЧАНИЕ:НЕ устанавливайте в пользовательской ячейке значение тега:0.Этот тег зарезервирован для представления textLabel.Если вы задаете теги в раскадровке Xcode, вы должны установить тегам для пользовательских представлений / меток значение 1 или выше.

Обратите внимание на пример Apple:

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath (NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];

    UILabel *label;

    label = (UILabel *)[cell viewWithTag:1];
    label.text = [NSString stringWithFormat:@"%d", indexPath.row];

    label = (UILabel *)[cell viewWithTag:2];
    label.text = [NSString stringWithFormat:@"%d", NUMBER_OF_ROWS - indexPath.row];

    return cell;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top