2016-01-24 5 views
0

У меня есть tableView, в котором я отправляю каналы пользователей, и я добавил кнопку с сердцем, как в виде ячейки. Я создал класс для представления ячеек и объявил там @IBOutlet кнопки. Затем в cellForRowAtIndexPath в представлении таблицы я вызвал кнопку и сделал indexpath.row номер тега самой кнопки. Затем я добавил цель с действием, которое нужно выполнить, и создал мой @IBAction. Теперь я пытаюсь изменить изображение кнопки сердца на красный, но ничего не происходит. Есть ли проблема с передачей UIImage на кнопку через отправителя. У меня нет ошибок. И инструкция if like = работает правильно. Вот мой код:Устранение неполадок UIButton image

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! PostsCellTableViewCell 

     cell.heartButton.tag = indexPath.row 
     cell.heartButton.addTarget(self, action: "liked:", forControlEvents: .TouchUpInside) 
return cell 
} 

@IBAction func liked (sender: UIButton){ 

     if like == false{ 
     sender.imageView?.image = UIImage(contentsOfFile: "red-heart.png") 
      like = true 
     } 
     else{ 
      sender.imageView?.image = UIImage(contentsOfFile: "white-heart-hi.png") 
      like = false 
     } 
     // self.tableView.reloadData() 
    } 

ответ

-1

Это действительно простая ошибка. Вы заявили, что ваша целевая функция «понравилась», но ваша функция объявлена ​​как «понравилась». Обратите внимание на отсутствие двоеточия во второй раз. Это важно, и это должно решить проблему. Если это не помогло устранить проблему, убедитесь, что вы объявили

var like = false 

Если это все еще не работает, комментарий и я буду продолжать помогать. Если это сработает, не забудьте проверить мой ответ.

+0

Селектор, соответствующий функции 'понравившейся (_ :)' функции Kegham '' нравится: 'с двоеточием. –

+0

См. [Взаимодействие с API-интерфейсом Objective-C] (https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithObjective-CAPIs.html#//apple_ref/doc/uid/TP40014216-CH4 -ID35) для получения дополнительной информации. –

+0

var like = false объявляется глобально. Мне грустно, что у меня нет ошибок. Я не могу удалить столбец. Я получу ошибку. –

2

Попробуйте это вместо этого.

if like == false{ 
     sender.setImage(UIImage(named: "red-heart.png"), forState: .Normal) 
     like = true 
    } else { 
     sender.setImage.setImage(UIImage(named: "white-heart-hi.png"), forState: .Normal) 
     like = false 
    } 
+0

THANKS InSearchOf .... он работает сейчас. –

+0

Сладкий. Рад, что я могу помочь. Всякий раз, когда вы получаете шанс, принятие этого ответа было бы удивительным. – InSearchOf