我使用UIButtonState(duhz)解决了这个问题,但我很好奇为什么完全这首先不起作用。
我在故事板中定义了“普通”图标,然后将其配置为在设置对象时显示“突出显示”图标。但是,当表首次加载时,我没有看到更新的图标。
但滚动表格后,突出显示的图标显示出来。这里发生了什么?
class TweetCell: UITableViewCell {
@IBOutlet weak var profileImage: UIImageView!
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var tweetLabel: UILabel!
@IBOutlet weak var timeStampLabel: UILabel!
@IBOutlet weak var favButton: UIButton!
@IBOutlet weak var replyButton: UIButton!
@IBOutlet weak var retweetButton: UIButton!
var tweet: Tweet!{
didSet {
profileImage.setImageWithURL(NSURL(string:tweet.user.profile_image_url))
nameLabel.text = tweet.user.name
tweetLabel.text = tweet.text
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "h:mm"
let str = dateFormatter.stringFromDate(tweet.createdAt)
timeStampLabel.text = str
if (tweet.favorited) {
favButton.imageView?.image = UIImage(named: "star_highlighted.png")
} else {
}
if (tweet.retweeted) {
retweetButton.imageView?.image = UIImage(named: "retweet_highlighted.png")
} else {
}
}
}
//滚动之前
//滚动后
答案 0 :(得分:2)
这种情况正在发生,因为tableview正在重用具有突出显示的图像视图的单元格。要解决此问题,您需要在else部分设置未突出显示的图像。
if (tweet.favorited) {
favButton.imageView?.image = UIImage(named: "star_highlighted.png")
} else {
favButton.imageView?.image = UIImage(named: "star_unhighlighted.png")
}
答案 1 :(得分:1)
不确定原因,但你可以用它来修复,我知道你已经修复它但仍然发布修复这个问题的方法。
[cell performSelectorOnMainThread:@selector(setNeedsDisplay) withObject:nil waitUntilDone:NO];