出现在当前视图下方而不是上方

问题描述 投票:0回答:2

我正在尝试在另一个呈现的视图控制器下面呈现视图控制器(如打开相机和按下图库时的WhatsApp)。

我尝试了很多东西,但都没有用。

swift dismiss presentviewcontroller
2个回答
0
投票

使用子视图控制器并在层次结构顶部设置添加的子视图控制器的视图。它将是最顶级的元素,因此这个视图的实际背景将被模糊,但这是要走的路。

//code inside UIViewController class
   func addViewControllerAtBottom() {
       let newVC = NewVCType() //just instantiate it
       addChildViewController(newVC)
       view.insertSubview(newVC.view, at: 0)  //at 0 means it's first rendered, all others will be on top of it
   }

0
投票

您可以通过执行以下操作重现此行为:

首先,用根NavigationController创建一个ViewController

let navController = UINavigationController(rootViewController: firstController)

然后,使用animated: false呈现此navigationController并在完成present方法时,推送你的第二个ViewController,仍然使用animated: false(以避免奇怪的动画):

    present(navController, animated: false) {
        navController.pushViewController(secondController, animated: false)
    }

在这里,你有一个新的导航与2 UIViewController,像WhatsApp。

完整代码,包含在按钮的动作中:

@IBAction func buttonTapped(_ sender: Any) {

    let navController = UINavigationController(rootViewController: firstController)

    present(navController, animated: false) {
        navController.pushViewController(secondController, animated: false)
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.