【问题标题】:assigning a custom destination to popToRootViewController swift 4将自定义目的地分配给popToRootViewController swift 4
【发布时间】:2018-12-08 03:37:23
【问题描述】:

我正在使用 navigationController?.popToRootViewController(animated: true) 将当前视图关闭为上一个视图。我的视图控制器关系是这样的。

VC1->VC2
VC1->VC3
VC3->VC2

每当客户端在 VC2 中时,我都想将导航控制器弹回 VC1。当 rootviewcontroller 设置为 VC1 时,这可以正常工作。但是,当客户端使用 VC3 的 segue 进入 VC2 时,rootviewcontroller 设置为 VC3,导航控制器弹出到 VC3。

我试图像这样更改 rootviewcontroller。

 // set root view controller
    let appdelegate = UIApplication.shared.delegate as! AppDelegate
    let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let VC1 = mainStoryboard.instantiateViewController(withIdentifier: "VC1") as! FirstViewController
    appdelegate.window!.rootViewController = VC1
    navigationController?.popToRootViewController(animated: true)

但这实际上在执行“navigationController?.popToRootViewController(animated: true)”行之前将视图控制器返回到根视图控制器 (VC1),因此没有动画。

有什么方法可以设置导航控制器的rootviewcontroller而不立即显示根视图控制器?

【问题讨论】:

  • 您是在每次导航时设置新的 RootViewController 还是只是推入堆栈?
  • 当 VC1 到 VC2 时,导航控制器被推送。但是,当 VC1 转到 VC3 时,VC3 被分配给一个新的导航控制器(这是因为我想要一个新的导航控制器的垂直转场)。因此,当用户使用 VC1->VC3->VC2 时,根视图是 VC3,它是导航堆栈上的第一个视图。我不知道如何解决这个问题。

标签: ios swift uinavigationcontroller rootviewcontroller


【解决方案1】:

如果你放appdelegate.window!.rootViewController = VC1,控制器堆栈已经死了,你的堆栈中只有一个单独的控制器,因此你不能申请popToRootViewController

如果这是您需要的导航,也许这个post 可以帮助您:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多