Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.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-从子视图调用presentViewController后显示意外方向_Ios_Swift_Uiviewcontroller_Rotation_Orientation - Fatal编程技术网

iOS-从子视图调用presentViewController后显示意外方向

iOS-从子视图调用presentViewController后显示意外方向,ios,swift,uiviewcontroller,rotation,orientation,Ios,Swift,Uiviewcontroller,Rotation,Orientation,我创建了3个控制器: RootViewController:容器视图控制器包含子视图 子视图控制器:通过addSubview OverlayViewController:通过使用presentViewController从子ViewController 旋转设备时,显示OverlayViewController,然后将其关闭,RootViewController将以意外方向显示(旋转180度) 在使用google一天并尝试了很多东西之后,我发现如果我在视图控制器中添加子视图控制器而不使用a

我创建了3个控制器:

  • RootViewController:容器视图控制器包含子视图
  • 子视图控制器:通过
    addSubview
  • OverlayViewController:通过使用
    presentViewController
    子ViewController
旋转设备时,显示OverlayViewController,然后将其关闭,RootViewController将以意外方向显示(旋转180度)

在使用google一天并尝试了很多东西之后,我发现如果我在视图控制器中添加子视图控制器而不使用
addChildViewController
,就会导致该问题

class RootViewController: UIViewController {

    var subViewController: SubViewController?
    @IBOutlet weak var subView: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        self.subViewController =  UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("SubViewController") as? SubViewController
        self.subView.addSubview((self.subViewController?.view)!)
        self.subViewController?.view.frame = self.subView.bounds

        //ADD THIS TO FIX ERROR
        self.addChildViewController(self.subViewController!)
    }
}
请您帮助我了解原因,以及如何在没有
addChildViewController
的情况下解决问题?非常感谢。

我刚找到这个

要以编程方式将子视图控制器合并到内容中,请通过执行以下操作在相关视图控制器之间创建父子关系:

  • 调用容器视图控制器的addChildViewController:方法。 此方法告诉UIKit您的容器视图控制器现在正在管理子视图控制器的视图

  • 将子级的根视图添加到容器的视图层次结构中。 在这个过程中,请始终记住设置儿童框架的大小和位置

  • 添加用于管理子级根视图的大小和位置的任何约束

  • 调用子视图控制器的didMoveToParentViewController:方法

  • 我刚找到这个

    要以编程方式将子视图控制器合并到内容中,请通过执行以下操作在相关视图控制器之间创建父子关系:

  • 调用容器视图控制器的addChildViewController:方法。 此方法告诉UIKit您的容器视图控制器现在正在管理子视图控制器的视图

  • 将子级的根视图添加到容器的视图层次结构中。 在这个过程中,请始终记住设置儿童框架的大小和位置

  • 添加用于管理子级根视图的大小和位置的任何约束

  • 调用子视图控制器的didMoveToParentViewController:方法