Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从子视图控制器推送视图控制器_Ios_Swift - Fatal编程技术网

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

Ios 从子视图控制器推送视图控制器,ios,swift,Ios,Swift,从按钮操作中,我展示了一个视图控制器,从展示的VC中,添加了另一个按钮,并在该按钮操作中添加了一个子视图,如下所示- let vc = UIStoryboard(name: "Profile", bundle: nil).instantiateViewController(withIdentifier: "APPopUpViewControllerViewController") as! APPopUpViewControllerViewControlle

从按钮操作中,我展示了一个视图控制器,从展示的VC中,添加了另一个按钮,并在该按钮操作中添加了一个子视图,如下所示-

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中推一个视图控制器时,它不起作用。如何从子视图推送视图控制器

推送视图控制器代码-

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

print(parent)
print(parent?.navigationController)   
self.parent?.navigationController?.pushViewController(vc, animated: true)
你可以试试

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

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

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

如何呈现您的ViewController?如果你把它推到了导航控制器上,那么你的代码是完美的,我认为它应该可以工作

如果没有,则尝试将WPSigninViewController模式显示为

let storyboard = UIStoryboard(name: "WPLogin", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "WPSigninViewController") as! WPSigninViewController
self.present(vc, animated: true)
它应该会起作用

如果ViewController是您的rootController,则可以向其中添加导航控制器:

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()

如何显示视图控制器?如果你把它推到了导航控制器上,那么你的代码是完美的,我认为它应该可以工作

如果没有,则尝试将WPSigninViewController模式显示为

let storyboard = UIStoryboard(name: "WPLogin", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "WPSigninViewController") as! WPSigninViewController
self.present(vc, animated: true)
它应该会起作用

如果ViewController是您的rootController,则可以向其中添加导航控制器:

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()

我没有使用self.navigationController?.pushViewController(vc,动画:true),而是尝试了你的代码,但没有成功@Sh_KhanGetting 1st print-Optional()2nd print-nil@Sh_khan这意味着你没有将
ApprovileViewController
嵌入导航控件中,请将其添加到情节提要/代码中,
pushViewController
没有它就无法工作否添加子项必须来自未正确显示的已推送vc。
Profile
VC的父级必须推送到导航控制器上,才能由导航控制器管理。我没有使用self.navigationController?.pushViewController(VC,动画:true),而是尝试了您的代码,但没有运气@Sh_KhanGetting 1st print-可选()第二次打印-nil@Sh_Khan这意味着您不会将
approvileviewcontroller
嵌入导航控件中,请将其添加到情节提要/code中,
pushViewController
如果没有它将无法工作否添加子项必须来自未正确呈现的推送vc。
配置文件
VC的父项必须推送到导航控制器上,才能由导航控制器管理。此外,如果你像我一样懒惰,只需将
更改为
强制崩溃以查看什么是零,然后从零开始查看。此外,如果你像我一样懒惰,只需将
更改为
强制崩溃以查看完全为零的内容,然后从那里开始查看