cari

Rumah  >  Soal Jawab  >  teks badan

objektif-c - Cara menggunakan reloadData dengan betul untuk menyegarkan tableView atau collectionView dalam pembangunan iOS

Baru-baru ini, saya tiba-tiba mendapati bahawa aplikasi iOS yang saya tulis sebelum ini kadang-kadang ranap apabila dimuat semula.
Saya menyemak kod dan menemui pepijat. Langkah-langkah yang membawa kepada pepijat adalah seperti berikut:

  1. Pengguna menarik paparan meja ke bawah untuk memuat semula.

  2. Kosongkan NSArray yang menyimpan data.

  3. Dapatkan data rangkaian dan kemudian isikannya ke dalam NSArray.

Dalam keadaan biasa tiada masalah untuk melakukan ini.
Walau bagaimanapun, jika pengguna menyeret paparan jadual semasa langkah 2 dan 3, ia akan ranap serta-merta.

Menganalisis sebabnya. Apabila saya mengosongkan NSArray, tableView tidak akan memanggil numberOfItemsInSection secara automatik untuk mendapatkan bilangan data terkini Jika ia ditarik ke bawah pada masa ini, tableview akan memanggil cellForItemAtIndexPath untuk mendapatkan sel baharu ialah 0, capaian cellForItemAtIndexPath Data akan berada di luar sempadan tatasusunan.

Jadi saya ingin bercakap tentang langkah kedua yang dimasukkan di tengah-tengah langkah ketiga, iaitu, selepas mendapatkan data jauh, kosongkan NSArray, kemudian gantikannya dengan data rangkaian baharu, dan kemudian laraskan muat semula data semula.

Tetapi ini masih mempunyai pepijat asal Sebelum memanggil reloadData, bilangan NSArray adalah berbeza daripada numberOfItemsInSection yang diperolehi oleh tableView. Cuma selang masa lebih pendek berbanding sebelum ini.

Saya ingin bertanya kepada semua pakar bagaimana anda mengemas kini data dalam tableView. Bagaimana untuk mencapai keselamatan 100%.

我想大声告诉你我想大声告诉你2853 hari yang lalu767

membalas semua(1)saya akan balas

  • 迷茫

    迷茫2017-05-02 09:24:52

    Selagi data berubah, anda harus memuat semula tableView
    Walaupun anda ingin mengosongkan kandungan, anda boleh memuat semulanya apabila anda selesai

    balas
    0
  • Batalbalas