[iOS] 如何避免whose view is not in the window hierarchy的錯誤

有時候在present一個viewController時, 會發現沒反應, 然後如果你發現了一個錯誤訊息如下:
Warning: Attempt to present <SecondViewController: 0x7fb54b523240> on <ViewController: 0x7fb54b61e7f0> whose view is not in the window hierarchy!

這是代表你使用了一個目前螢幕上看不見, 抑或是說, 不是最上層的view來present這一個SecondViewController.

如果你不能確定目前螢幕上最上層的view是哪一個,
要確定你抓到的viewController一定是"可見的"最上層的viewController,
可以用以下方法

- (UIViewController*) mostTopController {
    UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;

    while (topController.presentedViewController) {
        topController = topController.presentedViewController;
    }

    return topController;
}

留言