从子视图控制器推送视图控制器

时间:2020-10-21 17:28:50

标签: ios swift

从按钮操作中,我呈现了一个 viewController ,从呈现的 VC 中添加了另一个按钮,并在该按钮上添加了一个 childView 像这样-

let vc = UIStoryboard(name: "Profile", bundle: nil).instantiateViewController(withIdentifier: "APPopUpViewControllerViewController") as! APPopUpViewControllerViewController
self.addChild(vc)
vc.view.frame = self.view.frame
self.view.addSubview(vc.view)
vc.didMove(toParent: self)

到目前为止,一切都工作正常,但是当我尝试从此子VC推送 viewController 时,它将无法工作。如何从 childView

推送 viewController

推送viewController代码-

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

3 个答案:

答案 0 :(得分:1)

您可以尝试

print(parent)
print(parent?.navigationController)   
self.parent?.navigationController?.pushViewController(vc, animated: true)

答案 1 :(得分:1)

我的猜测是self.navigationController为nil,因此您的可选链接失败。

答案 2 :(得分:0)

如何显示 ViewController ?如果您已将其推送到导航控制器,则您的代码是完美的,我认为它应该可以工作。

如果没有,请尝试将 WPSigninViewController 呈现为

let storyboard = UIStoryboard(name: "WPLogin", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "WPSigninViewController") as! WPSigninViewController
self.present(vc, animated: true)

它应该工作。

如果 ViewController 是您的rootController,则可以向其中添加NavigationController:

let viewController = ViewController(nibName: nil, bundle: nil)
let navigationController = UINavigationController(rootViewController: viewController)
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.window?.rootViewController = navigationController
self.window?.makeKeyAndVisible()