簡體   English   中英

退出時回到初始故事板 ViewController

[英]Going back to initial storyboard ViewController on logout

我在我的 iOS 中使用故事板。 第一個屏幕是登錄屏幕。 當用戶登出或被登出時,他可能在一個深層次的屏幕上。

例如:登錄視圖控制器 => 模態視圖控制器 => 標簽欄控制器 => 導航控制器 => 視圖控制器 => 視圖控制器。 我想從最頂部的視圖控制器一直返回到底部的視圖控制器。

編輯:這是視圖層次結構圖:在此處輸入圖片說明

謝謝!

我為 UIViewControllers 編寫了一個似乎有效的類別:

- (void) popToInitialViewController
{
    UIViewController *vc;
    if (self.navigationController != nil) {
        vc = self.navigationController;
        [self.navigationController popToRootViewControllerAnimated:NO];
        [vc popToInitialViewController];
    }
    else if (self.tabBarController != nil) {
        vc = self.tabBarController;
        [vc popToInitialViewController];
    }
    else if (self.presentingViewController != nil) {
        vc = self;

        while (vc.presentingViewController != nil)
            vc = vc.presentingViewController;

        [vc dismissModalViewControllerAnimated:NO];

        [vc popToInitialViewController];
    }
}

評論表示贊賞:)

假設所有內容都被推送到導航堆棧上,這應該可以工作:

[self.navigationController popToRootViewControllerAnimated:YES];

就我而言,我直接設置窗口rootViewController如下:

func popToInitialScreen() {
    let window = UIApplication.shared.keyWindow
    window.rootViewController = nil
    window.rootViewController = // init your initial view controller
    window.makeKeyAndVisible()
}

PS keyWindow 在 iOS 13 中已棄用,不應用於支持多個場景的應用程序,因為它會在所有連接的場景中返回一個關鍵窗口。

暫無
暫無

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

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