ios - 关于收藏 点赞收藏按钮应该如何判断
PHP中文网
PHP中文网 2017-04-18 09:13:51
0
4
505

右上角的爱心是收藏按钮,白色是未收藏,红色是收藏.
需求是: 用户可以任务点击收藏和取消收藏,如果点了收藏,下次再来到这个页面要显示已收藏状态.
但是我的代码只能做到点击收藏和取消收藏,下次再来到这个页面又变成未收藏状态了(应该是重新判断了代码,所以我想应该要记录下用户的点击状态,如果用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];

    }
}

谢谢~

PHP中文网
PHP中文网

认证高级PHP讲师

全部回覆(4)
洪涛

這個一般是由後台回傳資料告訴你這個商品到底有沒被收藏的 用UserDefault的話你可以直接去吧商品id作為Key,Value值為一個BOOL值記錄他有沒被收藏

    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"商品id"];
    [[NSUserDefaults standardUserDefaults] synchronize];

然後在viewWillAppear裡面先去取值

[[NSUserDefaults standardUserDefaults] boolForKey:@"商品id"];
刘奇

我覺得這種東西最好不要用 userDefault 存。 userDefault 是把整個 dictionary 存到 plist 檔案裡的。隨著商品越來越多,這個 dictionary 的鍵值也會越來越多,到最後只是需要載入一個商品的收藏狀態,要讀一個上萬行的文件,不得慢死。

這個問題我通常是這麼處理的。在用戶點擊收藏按鈕的時候做兩件事:

  1. 發收藏/取消收藏的請求給後台

  2. 更新 model,即時更新顯示狀態

第 2 條用手動還是用 ReactCocoa 都可以。然後我猜你的問題是,清單頁裡的 model 還是沒更新的狀態,所以回到清單頁、再從清單頁點進來之後,還顯示的是沒更新的狀態。而我一般的做法是,詳情頁裡的 model 跟列表頁的 model 用的是同一個物件。幾個關鍵的程式碼:

從列表頁進詳情頁:

detailViewController.someModel = self.someModelArray[someIndex];
[UINavigationController pushViewController:detailViewController animated:...];

注意此處拷貝的是一個物件類型。詳情頁的 model 與列表頁數組裡的 model 是不同的指針指向同一個對象,同一塊內存,所以在詳情頁裡對 model 的更新能讓列表頁的 model 同時更新。 如果只傳一個基本類型,例如像你描述裡寫的isCollection,就起不到這個作用了。

在詳情頁收藏/取消收藏:

self.someModel.favorited = !self.someModel.favorited; // 更新 model
[self.someView configureWithData:self.someModel]; // 更新界面

[SomeModelStore requestFavoriteUnFavorite:self.someModel.favorited ofSomeModel:self.someModel]; // 发送网络请求

而這樣回到列表頁,列表頁的 model 也更新了。如果列表頁也顯示愛心標誌的話,可以簡單加一句:

[self.tableView reloadData];

就可以更新清單頁的愛心標誌了。

PHPzhong

這個收藏你應該是對伺服器資料做出修改,而不是簡單的本地修改資料

巴扎黑

我最近也在做類似的,按讚可以用ajax後台回傳記錄到資料庫的資料麼?這種方式處理怎麼樣

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板