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

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

membalas semua(4)
洪涛

Ini biasanya mengembalikan data dari latar belakang untuk memberitahu anda sama ada produk telah dikumpul atau tidak Jika anda menggunakan UserDefault, anda boleh terus menggunakan id produk sebagai Kunci, dan nilai Nilai ialah nilai BOOL untuk merekodkan sama ada ia. telah dikumpul atau tidak

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

Kemudian dapatkan nilai dahulu dalam viewWillAppear

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

Saya rasa sebaiknya jangan gunakan userDefault untuk menyimpan perkara seperti ini. userDefault menyimpan keseluruhan kamus ke dalam fail plist. Memandangkan semakin banyak produk, nilai utama kamus ini juga akan meningkat Pada akhirnya, kami hanya perlu memuatkan status koleksi satu produk, dan kami perlu membaca fail dengan puluhan ribu baris, yang sangat perlahan.

Beginilah biasanya saya menangani masalah ini. Lakukan dua perkara apabila pengguna mengklik butang kegemaran:

  1. Hantar koleksi/batalkan permintaan kutipan ke bahagian belakang

  2. Kemas kini model, kemas kini status paparan serta-merta

Item 2 boleh dilakukan secara manual atau dengan ReactCocoa. Kemudian saya rasa masalah anda ialah model dalam halaman senarai masih tidak dikemas kini, jadi selepas kembali ke halaman senarai dan mengklik dari halaman senarai, ia masih menunjukkan bahawa ia tidak dikemas kini. Pendekatan umum saya ialah menggunakan objek yang sama untuk model dalam halaman butiran dan model pada halaman senarai. Beberapa kod utama:

Pergi ke halaman butiran dari halaman senarai:

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

Perhatikan bahawa apa yang disalin di sini ialah jenis objek. Model pada halaman butiran dan model dalam tatasusunan pada halaman senarai adalah penunjuk berbeza yang menunjuk ke objek yang sama dan memori yang sama, jadi mengemas kini model pada halaman butiran boleh mengemas kini model pada halaman senarai pada masa yang sama. Jika anda hanya lulus jenis asas, seperti isCollection seperti yang tertulis dalam keterangan anda, ia tidak akan mempunyai kesan ini.

Kumpul/batalkan kegemaran dalam halaman butiran:

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

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

Apabila anda kembali ke halaman senarai, model halaman senarai juga dikemas kini. Jika halaman senarai turut memaparkan simbol hati, anda boleh menambah:

[self.tableView reloadData];

Anda boleh mengemas kini logo cinta pada halaman senarai.

PHPzhong

Untuk koleksi ini, anda harus mengubah suai data pelayan dan bukannya mengubah suai data secara setempat

巴扎黑

Saya telah melakukan sesuatu yang serupa baru-baru ini Bolehkah saya menggunakan latar belakang ajax untuk mengembalikan data yang direkodkan ke pangkalan data untuk suka? Bagaimana pula dengan mengendalikannya dengan cara ini

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan