簡體   English   中英

在NSTimer上重新加載TableView部分

[英]Reloading the TableView Section on NSTimer

我正在按計划在0.05秒內重新加載NSTimer上的特定tableview的部分。 我在該單元格中有一個按鈕,但是一旦計時器啟動,我將無法獲得按鈕單擊事件。

請幫助我:)在此先感謝

之所以不能按下該按鈕,是因為您不斷地重新加載tableView,因此在按下該按鈕時會對其進行初始化。

有兩種解決方案(一種對您更好,但看不到您的代碼,我無法分辨出哪個)。

解決方案A:只需在單元格中更新標簽,而不是在表視圖上調用reloadData。

解決方案B:重用UITableViewCells並僅在需要時初始化按鈕,而不是在每個reloadData上初始化按鈕。

退后一步,考慮一下您要在這里做什么:

您有一個帶有一個單元格的UITableView,應該以20 Hz更新。

二十。 赫茲。

當您reloadSections:withRowAnimation:時會發生什么reloadSections:withRowAnimation:

  1. TableView向其數據源詢問該部分中的行數。
  2. TableView必須詢問其委托人是否實現tableView:heightForRowAtIndexPath: -如果這樣做,則需要調用該方法。
  3. TableView向其數據源詢問一個單元格,然后該單元格將嘗試使其中一個單元出隊(即是否存在重用標識符...)並配置該單元格。
  4. 然后,TableView將采用此單元格並將其插入視圖層次結構中,刪除舊的單元格,然后將其子視圖稱為layout。

二十。 驚人的。 時報。 一秒。

不要那樣做!

相反,僅在確實需要時執行更改。 否則,您會耗盡電池電量,UI會變得遲鈍,因為剛剛造成的所有負載都會阻塞事件循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM