簡體   English   中英

iOS狀態恢復動畫bug

[英]iOS state restoration animation bug

我只是想在我的一個應用程序中實現iOS State-Restoration API。 在最終實現它之后,我發現我以模態方式呈現的ViewController使用動畫來恢復,這不是我想要的。 我希望我的應用程序只是在我離開它的狀態,但沒有讓用戶看到他到那里的熱。

所以我繼續下載Apple示例代碼: https//developer.apple.com/library/ios/samplecode/StateRestore/Introduction/Intro.html並想看看它是否也在那里發生。 事實證明它確實如此。

此外,日志中還有一個警告:

Unbalanced calls to begin/end appearance transitions for <UINavigationController: 0x7b0512b0>.

你能否告訴我,我和Apples示例代碼是否做錯了,或者是否是iOS中的錯誤?

順便說一句。 我在iOS8上測試

感謝任何幫助,喬治

以下解決方案直接來自Apple。

在你的app委托中,你應該實現application:willFinishLaunchingWithOptions:代替didFinishLaunching或者除了didFinishLaunching )。 在您的實現中,可能是返回true之前的最后一行(如果這是Objective-C,則為YES),插入以下行:

self.window?.makeKeyAndVisible()

或者,如果這是Objective-C:

[self.window makeKeyAndVisible];

事實證明,這總是需要的,但文檔從未明確過。

來自文檔: 在啟動時保留應用程序的視覺外觀

請參閱下面的清單中的第3項。

實施國家保護和恢復清單

支持狀態保存和恢復需要修改應用程序委托和查看控制器對象以對狀態信息進行編碼和解碼。 如果您的應用程序具有任何也具有可保存狀態信息的自定義視圖,則還需要修改這些對象。

將狀態保存和恢復添加到代碼中時,請使用以下列表提醒您需要編寫的代碼。

  • (必需)在app appate中實現應用程序:shouldSaveApplicationState:和application:shouldRestoreApplicationState:methods; 請參閱在應用程序中啟用狀態保留和恢復。
  • (必需)通過為其分配非空字符串,將恢復標識符分配給要保留的每個視圖控制器
    restorationIdentifier屬性; 請參閱標記視圖控制器以進行保留。

    如果要保存特定視圖的狀態,請將非空字符串分配給其restorationIdentifier屬性; 請參閱保留您的觀點狀態。

  • (必填)從​​應用程序顯示應用程序窗口:willFinishLaunchingWithOptions:應用程序委托的方法。 狀態恢復機制需要窗口,以便它可以恢復滾動位置和應用程序界面的其他相關位。

  • 將恢復類分配給適當的視圖控制器。 (如果
    你沒有這樣做,你的應用代表被要求提供
    恢復時相應的視圖控制器。)請參閱恢復您的
    在啟動時查看控制器。

  • (推薦)使用encodeRestorableStateWithCoder:和decodeRestorableStateWithCoder:這些對象的方法對視圖狀態和視圖控制器進行編碼和解碼; 請參閱編碼和解碼視圖控制器的狀態。
  • 使用應用程序對應用程序的任何版本信息或其他狀態信息進行編碼和解碼:willEncodeRestorableStateWithCoder:和application:didDecodeRestorableStateWithCoder:應用程序委托的方法; 請參閱保留應用程序的高級狀態。

  • 充當表視圖和集合視圖的數據源的對象應實現UIDataSourceModelAssociation協議。 雖然不是必需的,但此協議有助於保留這些類型的視圖中的選定和可見項。 請參閱實現保護友好的數據源。

Apple示例代碼似乎在Xcode 8上運行良好。

所以我認為不需要額外的代碼更改

暫無
暫無

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

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