每次我进入不同的 UIcontrol 视图时额外的视图层 swift

extra layer of view everytime i go into a different UIcontrolview swift

这是第一个,正常没有问题

每次进入新视图时都会有一个额外的图层。

你可以看到它每次都在增加

每当我转到 xcode 上的不同视图时,都会有一个工具栏大小的图层挡住了我的视图,我是 swift 的新手,所以如果我不这样做,我很抱歉'使用正确的术语,但任何人都可以帮我解决这个问题吗?

这是我用来切换视图的代码

    let register = UIStoryboard(name: "RegisterEmail", bundle: nil)
    let controller =register.instantiateViewController(identifier:"RegisterEmail") as! RegisterEmail 
    let navigation = UINavigationController(rootViewController:controller)
    self.view.addSubview(navigation.view)
    self.addChild(navigation)
    navigation.didMove(toParent: self)

编辑(解决了问题)但是

let storyboard = UIStoryboard(name: "ForgotPassword", bundle: nil)
    let secondViewController = storyboard.instantiateViewController(withIdentifier: "ForgotPassword") as! ForgotPassword
    self.navigationController?.pushViewController(secondViewController, animated: true)

不起作用,有什么帮助吗?

看起来您正在当前导航堆栈中添加一个新的导航堆栈,这应该是您在视图中添加新导航栏的原因。您应该只推送或显示视图。

就像前面的答案所说的那样,您一直在向 viewController 的视图中添加一个 UINavigationController 视图。我相信您已经在故事板中添加了 UINavigationController,因此,要获取它,只需使用 self.navigationController。您不需要创建一个新的并将其添加到 viewStack。它已经在显示您当前的 VC。 我不明白你想要达到什么目的。如果您希望每个视图都有自己的 VC,那么第二个代码片段中的代码应该可以工作 - 如果您在故事板中创建了三个 viewController。但是,从第一个代码片段来看,您似乎想要添加三个 child viewController。如果是这种情况,请将代码片段更改为

let storyboard = UIStoryboard(name: "ForgotPassword", bundle: nil)
let childVC = storyboard.instantiateViewController(withIdentifier: "ForgotPassword") as! ForgotPassword
addChild(childVC) 
childVC.view.frame = frame
view.addSubview(childVC.view)
childVC.didMove(toParent: self)