[英]Odd behavior when updating interface as part of willActivate
我有一個顯示6行WKInterfaceTable
的WKInterfaceController
子類。 此類也是初始接口控制器。 當通過handleActionWithIdentifier:forLocalNotification
接收通知動作時,我將模態呈現第二個接口控制器。 用戶對模態顯示的界面控制器不采取任何措施,但是加載它會修改初始界面中行控制器使用的6個對象之一的狀態。 關閉模態控制器后,我的意圖是在表中反映更新后的狀態。
檢索更新的對象沒有任何問題,因為它們的管理是由另一個類處理的,我可以簡單地查詢更新的數據。 由於初始接口控制器已經執行過awakeWithContext:
所以我只能依靠willActivate
來更新接口。 這似乎符合Apple的准則,因為我沒有將接口初始化為該方法的一部分,而只是對其進行了更新。
TL; DR;
當我通過行控制器更新行時,只有已更新的值才能正確顯示在單元格上。 其他單元在設計時在情節提要板上使用分配給我單元中標簽的默認值。
例如
極為奇怪的是,這只會在隨后的對willActivate
調用中willActivate
。 剛打開手表應用程序並在willActivate
首次更新界面時,它的行為就與預期的一樣。 由於模態取消而被激活時,此行為會逐漸蔓延。
感謝您的任何想法。
我可以想到兩個可能的問題。
首先,WatchKit接口控制器的行為就像在頁面集中快照一樣。 一次顯示這些值之后,這些值將在完全顯示在屏幕上並且將調用您的willActivate
方法后才會被更新。 當界面不可見時,切換圖像與切換表行標簽相同。 必須在willActivate
中完成,否則似乎會被丟棄。
我看到的與此相關的另一個問題是setNumberOfRows
,需要更新所有行中的值。 否則,最終將獲得針對您設置的行值的定制行值,以及所有其他行的情節提要中的默認值。 如果您只更新willActivate中特定行的值, setNumberOfRows
在表上調用setNumberOfRows
,那么我想您應該向Apple的錯誤報告系統提交錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.