Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.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抽屉UI_Ios_Swift_Xcode_Uiviewcontroller - Fatal编程技术网

仅在插入断点时工作的iOS抽屉UI

仅在插入断点时工作的iOS抽屉UI,ios,swift,xcode,uiviewcontroller,Ios,Swift,Xcode,Uiviewcontroller,在我添加自述文件中显示的断点之前,以下应用程序无法正常工作。如果没有断点,UI将无法完成填充,并且无法识别平移手势。有了断点,一切都按设计进行 该应用程序有两个视图控制器:一个父视图控制器和一个抽屉视图控制器,通过以下方式添加到父视图: override func viewDidLoad() { super.viewDidLoad() let vc = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewCont

在我添加自述文件中显示的断点之前,以下应用程序无法正常工作。如果没有断点,UI将无法完成填充,并且无法识别平移手势。有了断点,一切都按设计进行

该应用程序有两个视图控制器:一个父视图控制器和一个抽屉视图控制器,通过以下方式添加到父视图:

override func viewDidLoad() {
    super.viewDidLoad()
    let vc = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "BottomSheetViewController") as! DrawerViewController
    vc.configureDrawer(containerView: drawerContainer, overlaidView: overlaidView)
    drawerContainer.addSubview(vc.view)
}
解决方案 和断点无关,这只是个侥幸。@rob mayof指出的问题是,子视图控制器和父视图控制器没有连接。下面标记了正确的解决方案。对于其他可能面临这一问题的人,苹果公司在网站上介绍了实现这些问题的正确方法

脚注 这个例子是为了在一个更大的项目中重现和隔离一个问题而开发的。在尝试执行此操作时,发现了此意外行为并找到了解决方案。

以下是您的代码:

override func viewDidLoad() {
    super.viewDidLoad()
    let vc = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "BottomSheetViewController") as! DrawerViewController
    vc.configureDrawer(containerView: drawerContainer, overlaidView: overlaidView)
    drawerContainer.addSubview(vc.view)
}
(下次请将其包含在您的问题中。)

您必须通过建立父/子视图控制器关系,告诉UIKit视图控制器的视图位于另一个视图控制器视图的层次结构中。因此,您需要添加以下行:

override func viewDidLoad() {
    super.viewDidLoad()
    let vc = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "BottomSheetViewController") as! DrawerViewController
    addChildViewController(vc)  // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    vc.configureDrawer(containerView: drawerContainer, overlaidView: overlaidView)
    drawerContainer.addSubview(vc.view)
    vc.didMove(toParentViewController: self) // <<<<<<<<<<<<<<<<<<<<<<<
}
override func viewDidLoad(){
super.viewDidLoad()
让vc=UIStoryboard.init(名称:“Main”,bundle:nil)。实例化eviewcontroller(标识符为:“BottomSheetViewController”)为!DrawerViewController

addChildViewController(vc)//我不知道。Rob,我已经根据你的建议编辑了这个问题,并添加了苹果关于容器视图控制器的文档参考。你今天教了我一些东西。谢谢。