Iphone UIView中的UIViewController未获得旋转委派

Iphone UIView中的UIViewController未获得旋转委派,iphone,objective-c,ios,ipad,Iphone,Objective C,Ios,Ipad,在UIScrollView子类中有一个UIViewController视图。问题是当我旋转设备时,UIViewController没有调用willRotate委托。这可能是因为UIView中没有实现旋转委托。解决这个问题的最好办法是什么 基本上结构是我有一个MainViewController,其中有一个UIScrollView。在这个UIScrollView中,我有一个子视图,它是一组UIViewController的视图。现在的问题是,当我旋转时,它不会收到旋转调用。处理此问题的一种方法是从

在UIScrollView子类中有一个UIViewController视图。问题是当我旋转设备时,UIViewController没有调用willRotate委托。这可能是因为UIView中没有实现旋转委托。解决这个问题的最好办法是什么

基本上结构是我有一个MainViewController,其中有一个UIScrollView。在这个UIScrollView中,我有一个子视图,它是一组UIViewController的视图。现在的问题是,当我旋转时,它不会收到旋转调用。处理此问题的一种方法是从MainViewController委托给相应的UIViewController。有没有更好/优雅的方法来解决这个问题


我将它添加为来自我的UIScrollView的子视图,而不是我的MainViewController,并且您不能从UIView执行UIViewController包含。如果我错了,请纠正我。我想你是在违反法律。视图中不能有控制器;相反,您应该有一个控制器来协调视图和用户输入之间的通信。在您的情况下,您可以将滚动视图设置为
MainViewController
self.view
,然后将viewcontrollers视图添加为子视图。

我认为您的做法与此相反。视图中不能有控制器;相反,您应该有一个控制器来协调视图和用户输入之间的通信。在您的情况下,您可以将滚动视图设置为
MainViewController
self.view
,然后将ViewController视图添加为子视图。

观看我在评论中发布的视频:

下面是对视图控制器包含的简短总结,这是您正在寻找的设计,不是将所有逻辑组合到一个视图控制器中,也不是对SDK中内置的内容使用委托

视图控制器有一个视图,并为该视图和它的一些子视图提供逻辑

对于该层次结构中的特定视图,您可能有一个复杂的视图层次结构和复杂的逻辑,从而保证该视图拥有自己的视图控制器来控制它及其子视图

假设您有一个MainViewController,它的视图是一个UIScrollView(或子类)。在这个scrollview中,您可能有一系列复杂的视图,它们都有自己的控制器,因此您有一个类SubViewController,它将scrollview的子视图作为它的视图

SubViewController需要使旋转和外观方法回调正常工作,以便实现子视图的逻辑并处理布局更改

    [mainViewControllerInstance addChildViewController:subViewControllerInstance];
但是,等等。子视图仍不在视图层次结构中

    [mainViewControllerInstance.view addSubView:subViewControllerInstance.view];
您已成功创建了两个视图控制器的有效视图控制器层次结构,并设置了它们视图的关联视图层次结构

现在,您将拥有适当的回调功能,因为MainViewController将它们转发给SubViewController

编辑:


查看查看控制器包含的概览文档:

观看我在评论中发布的视频:

下面是对视图控制器包含的简短总结,这是您正在寻找的设计,不是将所有逻辑组合到一个视图控制器中,也不是对SDK中内置的内容使用委托

视图控制器有一个视图,并为该视图和它的一些子视图提供逻辑

对于该层次结构中的特定视图,您可能有一个复杂的视图层次结构和复杂的逻辑,从而保证该视图拥有自己的视图控制器来控制它及其子视图

假设您有一个MainViewController,它的视图是一个UIScrollView(或子类)。在这个scrollview中,您可能有一系列复杂的视图,它们都有自己的控制器,因此您有一个类SubViewController,它将scrollview的子视图作为它的视图

SubViewController需要使旋转和外观方法回调正常工作,以便实现子视图的逻辑并处理布局更改

    [mainViewControllerInstance addChildViewController:subViewControllerInstance];
但是,等等。子视图仍不在视图层次结构中

    [mainViewControllerInstance.view addSubView:subViewControllerInstance.view];
您已成功创建了两个视图控制器的有效视图控制器层次结构,并设置了它们视图的关联视图层次结构

现在,您将拥有适当的回调功能,因为MainViewController将它们转发给SubViewController

编辑:


查看有关视图控制器包含的概览的文档:

确保
MainViewController
的视图
.autoresizesubview
的属性设置为
YES
。如果使用iOS 5,则应使用childViewController API并将所有这些视图控制器添加为滚动视图的子视图控制器。然后你可以免费使用旋转方法和所有其他外观方法。@Matt是的。我知道这一点。。但如何添加视图控制器作为滚动视图的子视图?无法从UIView添加childViewController,对吗?UIScrollView是UIView而不是UIViewController。我猜UIViewController包含只适用于UIViewController到UIViewController,而不适用于UIView到UIViewController?如果我理解错误,请纠正我如果你有开发者许可证,你可以观看这段视频:它信息量很大。基本上,您有一个视图层次结构和一个视图控制器层次结构。您希望将视图控制器添加到控制器层次结构中,并将其视图添加到视图层次结构中。请确保
MainViewController
的视图
。autoresizeSubviews
的属性设置为
YES
。如果您使用iOS 5,则应使用childViewController API并将所有这些视图控制器添加为子视图滚动视图视图控制器的。然后你可以免费使用旋转方法,以及所有其他外观方法。@Matt是的。我知道