将 navigationController 堆栈中的 UIViewController 置于顶部

Bring a UIViewController in navigationController stack to top

我有一个 UINavigationController,堆栈中有多个 UIViewController。我现在想将一个特定的 UIViewController 从堆栈带到顶部,而不弹出中间的其他 UIViewController。

我能做到吗?...考虑到它的 FIFO?

不,你不能。如果您觉得有必要这样做,很可能是您的应用程序流程中需要更改某些内容。

我可以用下面的代码做到这一点

for controller in navigationController?.viewControllers { 
  if controller is MyViewController { 
    nextController = controller
    } 
  }

var controllers = navigationController?.viewControllers              
controllers.removeAtIndex(controllers.indexOf(nextController!)!)
controllers.append(nextController!)
navigationController?.setViewControllers(controllers, animated: false)

然而...引用著名的杰夫·戈德布卢姆的话...太忙于思考我们是否可以停下来思考我们是否应该...这可能无法接受,但它似乎有效

将视图控制器堆栈作为数组进行操作会产生一些影响...例如。根视图控制器发生了什么...您是否在故事板中定义了它?