关于收藏 点赞收藏按钮应该如何判断
右上角的爱心是收藏按钮,白色是未收藏,红色是收藏.
需求是: 用户可以任务点击收藏和取消收藏,如果点了收藏,下次再来到这个页面要显示已收藏状态.
但是我的代码只能做到点击收藏和取消收藏,下次再来到这个页面又变成未收藏状态了(应该是重新判断了代码,所以我想应该要记录下用户的点击状态,如果用nsuserdefaults代码应该如何写?).
以下是我的代码:
-(void)rightBtnClick:(UIButton *)ban {
isCollection = !isCollection;
if (isCollection) {
[self.rightBtn setImage: [UIImage imageNamed: @"collection"] forState: UIControlStateNormal];
} else {
[self.rightBtn setImage: [UIImage imageNamed: @"notCollection"] forState: UIControlStateNormal];
}
}
谢谢~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这个一般是由后台返回数据告诉你这个商品到底有没被收藏的 用UserDefault的话你可以直接去吧商品id作为Key,Value值为一个BOOL值记录他有没被收藏
然后在viewWillAppear里面先去取值
我觉得这种东西最好不要用 userDefault 存。userDefault 是把整个 dictionary 存到 plist 文件里的。随着商品越来越多,这个 dictionary 的键值也会越来越多,到最后只是需要加载一个商品的收藏状态,要读一个上万行的文件,不得慢死。
这个问题我一般是这么处理的。在用户点击收藏按钮的的时候做两件事:
发收藏/取消收藏的请求给后台
更新 model,即时更新显示状态
第 2 条用手动还是用 ReactCocoa 都可以。然后我猜你的问题是,列表页里的 model 还是没更新的状态,所以返回列表页、再从列表页点进来之后,还显示的是没更新的状态。而我一般的做法是,详情页里的 model 跟列表页的 model 用的是同一个对象。几处关键的代码:
从列表页进详情页:
注意此处拷贝的是一个对象类型。详情页的 model 与列表页数组里的 model 是不同的指针指向同一个对象,同一块内存,所以在详情页里对 model 的更新能让列表页的 model 同时更新。 如果只传一个基本类型,比如像你描述里写的
isCollection
,就起不到这个作用了。在详情页里收藏/取消收藏:
而这样回到列表页,列表页的 model 也更新了。如果列表页也显示爱心标志的话,可以简单加一句:
就可以更新列表页的爱心标志了。
这个收藏你应该是对服务器数据做出修改,而不是简单的本地修改数据
我最近也在做类似的,点赞可以用ajax后台返回记录到数据库的数据么?这种方式处理怎么样