旋转问题,管理自定义TabBarController中的子视图

时间:2010-12-03 16:25:08

标签: iphone uiviewcontroller uitabbarcontroller rotation

我正在实现自定义TabBarViewController,除了设计之外应该具有相同的行为。

我在一个数组中管理我的subViewControllers,使用延迟加载来初始化视图,如“开始Iphone开发”第6章所述,我通过填充我的数组中的NSNull个对象作为标签I拥有并在需要时用新近初始化的viewControllers替换它们。

通过这种方式,我可以跟踪正确的视图顺序,并将它们与正确的选项卡相关联(数组中的第一个位置保留给第一个视图等)。

切换视图时,将使用[currentViewController.view removeFromSuperview];删除当前视图,并使用[self.view addSubview:newViewController.view];添加新视图。现在以前的视图保留在数组中以供将来使用。

旋转设备时会遇到困难,因为(我认为)我的数组中viewControllers当时未添加到超级视图addSubview的{​​{1}}没有被旋转,这种情况有哪些感觉,我想。

结果是旋转后,例如对于横向模式,用户切换到他之前已经存在的视图,这是因为已经初始化的视图,视图仍然以纵向模式呈现给他。

我的问题是:

1)我是否必须手动轮换未添加的子视图,如果是这样,这怎么做最简单?

2)正常TabBarController如何管理其控制器,换句话说,我做得对吗?

1 个答案:

答案 0 :(得分:0)

为什么不尝试更改用户所在的当前模式(Potrait或横向)的视图控制器视图属性的框架

所以在shouldAutoRotateToInterfaceOrientation中只需更改 yourviewcontroller.view.frame = CGRectMake(x,y,width,height),也许你会有你的旋转视图!!

我希望它有所帮助