簡體   English   中英

在應用開始關閉帶有動畫的視圖后,關閉不帶有動畫的視圖

[英]dismiss view without animation after app started dismissing the view with animation

有沒有辦法取消關閉帶有動畫的視圖,然后關閉沒有動畫的同一視圖?

所以這是發生的事情:在我的iPad應用程序上,我有一個根控制器,用於顯示設置視圖控制器。 無論是由用戶演示還是關閉,設置視圖都會隨着動畫一起出現/消失。

但是,在某些情況下,用戶會被踢出應用程序,並且該應用程序應顯示登錄視圖。 因此,如果rootViewContoller具有presentedViewController(如上面的設置視圖),則請執行以下操作:

   [rootViewController dismissViewControllerAnimated:NO completion:^{
   [rootViewController presentViewController:logInViewController animated:NO completion:NULL];
   }];

現在,問題出在少數情況下,即在應用程序將用戶趕出用戶之前,用戶解雇了設置視圖控制器。 當應用程序顯示上面的代碼時,因為設置視圖已被關閉,應用程序將發出警告

"Attempt to dismiss from view controller <UINavigationController:> while a presentation or dismiss is in progress!"

並且該代碼無法運行,因此,以后不會顯示登錄視圖。

我嘗試的一種方法是僅等到完成動畫解雇后再執行presentViewController:animated:completion:並進行延遲(具有任意時間范圍)。 這行得通,但是我不太喜歡這種方法,因為不能保證“任意時間范圍”始終在工作(或者如果我設置的時間太長,那么用戶將不得不等待該時間)。 而且我也不喜歡使用NSInvocation的代碼非常復雜。

所以我想知道是否有一種方法可以快速(不使用動畫)強制關閉被動畫關閉的視圖?

將單獨的UIWindow用於您的登錄視圖,並使其成為鍵窗口。 完成后,您可以切換回另一個窗口,在這種情況下,“設置”屏幕仍然可見。 通常,當我使用某個應用程序時,如果我做某件事,然后離開該應用程序然后回來,我希望“內容”仍然存在。 我認為這就是那種用例。

暫無
暫無

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

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