UIViewController在viewWillAppear和viewDidAppear之间调整自己的大小?

问题描述:

我的项目中有一个非常奇怪的错误。我有一个UIScrollView作为我的主要观点。在里面,我有一个UIViewController(不是UITableViewController),它有一个UITableView实例变量,以及一些杂项UIButtons。我已经将视图控制器的视图框架设置为CGRectMake(0, 64, 320, 388),因为我在它上面有一个标签栏(这不是功能)。起初,它的效果很好,看起来不错,但是一旦我出示并解雇modalViewController(因此我重新加载了UIViewController),它会将UIViewController的视图推到屏幕的顶部(默认情况下将其设置为CGRectMake(0, 0, 320, 460),我已经设置wantsFullScreenLayoutNO,现在将其设置为CGRectMake(0, 0, 320, 388)UIViewController在viewWillAppear和viewDidAppear之间调整自己的大小?

我在什么地方跟踪这个问题viewWillAppearviewDidAppear之间这是我确切的日志驳回modalViewController之后:

2011- 05-06 11:08:39.974 Campus [1570:207] Frame是0.000000,64.000000,320.000000,388.000 000(viewWillAppear中)
2011-05-06 11:08:40.378校园[1570:207] Frame是0.000000,0.000000,320.000000,388.000000(viewDidAppear)

正如你可以看到,该帧是在细viewWillAppear,但不在viewDidAppear

我已经做了下面的事情,试图解决这个问题:
- 设置所需的帧loadViewviewDidLoadviewWillAppearviewDidAppear
- 将我的wantsFullScreenLayout设置为NO
- 杀死我的[super viewWillAppear:][super viewDidAppear:]调用我的方法覆盖。

我该怎么做?!?!?

+0

是谁提出的模态视图控制器? – diatrevolo 2011-05-06 15:26:30

+0

多数民众赞成调整自己 – aopsfan 2011-05-13 15:56:24

我的问题在于,从iOS 4开始,Apple仅支持每个窗口1个视图控制器。但是,从iOS 5开始,Apple增加了对容器视图控制器的支持,并且已经添加了到UIViewController的方法,例如addChildViewController:。使用容器视图控制器算法解决了我的问题。请访问UIViewController Class Reference了解更多信息。

编辑:对于那些懒得在课堂上引用搜索“容器视图控制器”,这里是班上参考的相关章节的要点:

自定义UIViewController子类也可以充当一个容器视图 控制器。容器视图控制器管理其拥有的其他视图控制器(也称为其子视图控制器 )的内容 的显示。孩子的视图可以按原样显示,或者与容器视图控制器拥有的视图一起呈现给 。

您的容器视图控制器子类应声明一个公共的 接口来关联其子级。这些方法的本质是给你增加 ,并取决于你正在创建的容器的语义。 您需要决定一次可以显示您的视图 控制器可以显示多少个孩子,当显示这些孩子时,以及他们的 显示在您的视图控制器的视图层次结构中的位置。您的视图控制器 类定义了哪些关系(如果有的话)由孩子共享。 通过建立你的容器干净的公共接口,你 确保儿童使用其功能逻辑,而无需访问你的容器如何实现 行为 太多私人资料。

你的容器视图控制器必须将孩子的根视图到视图层次之前本身就是一个子视图控制器 关联。 这使得iOS的正确路线事件的子视图控制器和 这些控制器管理的意见。同样地,它从视图层次结构中移除一个 孩子的根视图后,就应该从自身断开 子视图控制器。要创建或打破这些关联,您的容器将调用基类 定义的特定方法。这些方法不打算由您的容器类的客户端调用 ;他们只能用于您的容器的实施 提供预期的遏制行为。

+1

你怎么能解决这个问题的UIViewController中,你能张贴一些例子吗? – 2012-11-23 07:52:08

+0

请提供代码示例及答案!链接到广阔的UIViewController类引用不会帮助其他任何人。 – 2012-11-30 17:52:33

+0

@TRedman自从一年前我的代码发生了很大的变化,我认为我不可能给出一个有用的代码示例。我在编辑中引用了部分类参考 – aopsfan 2012-12-02 03:11:38