2015-12-09 2 views
0

У меня есть пользовательская ячейка UITableview с UILabel и UIImageView, когда ячейка, но сделана в раскадровке и связана с IBOutlet, когда ячейка выбрана, фон изображения меняет вид цвет выбора? Как я могу оставить фоновый цвет UIImageView неизменным?UIImageView исчезает, но не UILabel, когда ячейка выделена

Благодаря

ответ

1

Try вызов:

cell.selectionStyle = UITableViewCellSelectionStyleNone 

в cellForRowAtIndexPath.

и (необязательно) переопределение:

- (void)setSelected:(BOOL)selected animated:(BOOL)animated 

скоро:

override func setSelected(selected: Bool, animated: Bool) 

Swift использование Примера:

override func setSelected(selected: Bool, animated: Bool) { 
    if selected { 
     yourView.alpha = 0.5 
    } else { 
     yourView.alpha = 1.0 
    } 
} 

Вы также можете изменить альфа вашего взгляда внутри animateWithDuration блока:

override func setSelected(selected: Bool, animated: Bool) { 
    UIView.animateWithDuration(0.3, animations: { 
     if selected { 
      yourView.alpha = 0.5 
     } else { 
      yourView.alpha = 1.0 
     } 
    }) 
} 

Obj-C Пример использования:

#import "YourTableViewCell.h" 

@implementation YourTableViewCell 

- (void)setSelected:(BOOL)selected animated:(BOOL)animated { 
    [super setSelected:selected animated:animated]; 
    //your code 
    // example: yourView.backgroundColor = [UIColor greenColor]; 
} 

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated { 
    [super setHighlighted:highlighted animated:YES]; 
    //your code 
    // example: yourView.backgroundColor = [UIColor greenColor]; 
} 

@end 
+0

Как и где я могу назвать setSelected? –

+0

Как видите, перед объявлением функции есть ключевое слово 'override'. Вам не нужно называть это. UITableView вызовет это для вас. Просто поместите этот метод в свой подкласс UITableViewCell. – zuziaka

+0

I ma, используя код objc, нет переопределения –

0

Вы можете изменить вам ImageView клетки в -didSelectRowAtIndexPath вас UITableView

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
      //get the cell from the selected row. 
      UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath]; 

     //change custom cell's imageView to desired backgroundColor 
     selectedCell.imageView = [UIColor clearColor]; 
} 

И не забудьте осуществить UITableViewDelegate и UITableViewDatasource

0

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

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 
    [tableview deselectRowAtIndexPath:indexPath animated:YES]; 
} 

Это может помочь вам. Если нет, то, пожалуйста, поделитесь информацией о своей реализации для этого.

0

вы могли бы установить цвет фона зрения изображения, чтобы очистить цвет.

Смежные вопросы