【问题标题】:addChildViewController alternative for iOS 4.3iOS 4.3 的 addChildViewController 替代品
【发布时间】:2012-03-04 21:26:20
【问题描述】:

我想使用与 addChildViewController 相同的功能,但适用于 4.3 版(addChildViewController 仅在 5 版中可用)。 提前致谢。

【问题讨论】:

    标签: iphone version addchild


    【解决方案1】:

    虽然不建议这样做,但您可以创建 UIViewController 的实例,访问它的 view 属性并将其设置为您的主要 UIViewController 管理的主要 view 的子视图。它有效,我从来没有遇到过这个问题。

    也就是说,推荐的方法是让NSObject 子类充当您的子控制器,而不是使用UIViewController,因为它具有特殊行为。

    【讨论】:

    • 除此之外,您可以通过从保留的 NSArray(完整初始化)中引用它们或将它们添加到保留的 NSMutableArray(惰性初始化)来跟踪添加的视图控制器
    【解决方案2】:

    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:)])
    【解决方案3】:

    我认为您要这样做的原因是针对 ipad 应用程序,因为 Apple 声明单个视图控制器应该“通常”(在 ipad 存在之前,他们声明“始终”)控制整个屏幕的视图。

    只有当 Apple 制作自己的容器视图控制器 (splitViewController) 时,ipad 的额外屏幕空间才真正改变,这最终导致 Apple 允许我们在 ios5 中创建自己的容器视图控制器。

    如果您的应用是 iphone 应用,那么我(和 Apple)会严重质疑您是否需要包含视图控制器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-27
      • 2020-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-29
      相关资源
      最近更新 更多