【发布时间】:2012-03-04 21:26:20
【问题描述】:
我想使用与 addChildViewController 相同的功能,但适用于 4.3 版(addChildViewController 仅在 5 版中可用)。 提前致谢。
【问题讨论】:
我想使用与 addChildViewController 相同的功能,但适用于 4.3 版(addChildViewController 仅在 5 版中可用)。 提前致谢。
【问题讨论】:
虽然不建议这样做,但您可以创建 UIViewController 的实例,访问它的 view 属性并将其设置为您的主要 UIViewController 管理的主要 view 的子视图。它有效,我从来没有遇到过这个问题。
也就是说,推荐的方法是让NSObject 子类充当您的子控制器,而不是使用UIViewController,因为它具有特殊行为。
【讨论】:
iOS: different addSubview behavior between iOS 4.3 and 5.0 中解释了类似的内容。
我已经通过添加这些行来解决它:
NSMutableArray *controladores=[[NSMutableArray alloc]init];
[controladores addObject:myController];
if ([[[UIDevice currentDevice] systemVersion] compare:@"5.0"] == NSOrderedAscending) {
[tabBar setViewControllers:controladores animated:YES];
}
【讨论】:
systemVersion 属性来检查操作系统版本。相反,您应该检查 setViewControllers: 选择器的存在,方法是:if ([tabBar respondsToSelector:@selector(setViewControllers:)])。
我认为您要这样做的原因是针对 ipad 应用程序,因为 Apple 声明单个视图控制器应该“通常”(在 ipad 存在之前,他们声明“始终”)控制整个屏幕的视图。
只有当 Apple 制作自己的容器视图控制器 (splitViewController) 时,ipad 的额外屏幕空间才真正改变,这最终导致 Apple 允许我们在 ios5 中创建自己的容器视图控制器。
如果您的应用是 iphone 应用,那么我(和 Apple)会严重质疑您是否需要包含视图控制器。
【讨论】: