2012-11-25 5 views
0

У меня возникла проблема с моим табличным просмотром.несовместимый указатель на целочисленное преобразование, инициализирующее «BOOL» (aka «signed char») с выражением типа «UIView *»

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

[tableView deselectRowAtIndexPath:indexPath animated:YES]; 

UITableViewCell *tableCell = [tableView cellForRowAtIndexPath:indexPath]; 
BOOL isSelected = (tableCell.accessoryView = [[ UIImageView alloc ] initWithImage:[UIImage imageNamed:@"Checkmark-hvid"]]); 

if (isSelected) { 

    tableCell.accessoryType = UITableViewCellAccessoryNone; 

} 
else { 

    tableCell.accessoryView = [[ UIImageView alloc ] 

           initWithImage:[UIImage imageNamed:@"Checkmark-hvid"]]; 
} 

} 

Проблема в том, что я не могу определить BOOL isSelected как оценочное изображение (изображение).

Если какой-либо орган знает ответ, пожалуйста, помогите мне!

  • Миккель V (СРЮ мой плохой английский)

ответ

0

В этом заявлении:

BOOL isSelected = (tableCell.accessoryView = [[ UIImageView alloc ] initWithImage:[UIImage imageNamed:@"Checkmark-hvid"]]); 

типа из (tableCell.accessoryView = ... является UIView * и это то, что компилятор жалуется. Для того, чтобы превратить его в BOOL, сделайте следующее:

BOOL isSelected = (tableCell.accessoryView = [[ UIImageView alloc ] initWithImage:[UIImage imageNamed:@"Checkmark-hvid"]]) != nil; 

(Обратите внимание на сравнение с nil, что приводит в логическом условии).

Однако весь ваш код выглядит несколько хитроумный, как я ожидаю, что alloc/init всегда удается, и поэтому isSelected быть всегда YES.