ios - UIViewController 报告为响应 addChildViewController : on iOS 4

标签 ios ios4 uiviewcontroller

有没有人遇到过这个?以下代码在 iOS 4 模拟器上运行时报告"is",但根据 Apple 文档,方法 addChildViewController 仅在 iOS 5 及更高版本上可用。这似乎不是正确的行为,这是一个错误吗?

if([UIViewController instancesRespondToSelector:@selector(addChildViewController:)]) {
    NSLog(@"YES"); 
} else {
    NSLog(@"NO");
}

最佳答案

我认为这是一个错误。调用 addChildViewController 似乎也没有任何警告或错误地运行。

我写了下面的 viewDidLoad:

- (void)viewDidLoad
{
    [super viewDidLoad];

    MyChildView *aChildViewController = [[MyChildView alloc] initWithNibName:@"MyChildView" bundle:nil];

    // Do any additional setup after loading the view, typically from a nib.
    SEL mySelector = @selector(addChildViewController:);
    if([UIViewController instancesRespondToSelector:mySelector] == YES) {
        NSLog(@"YES addChildViewController:"); 
        [self addChildViewController:aChildViewController];
    } else {
        NSLog(@"NO addChildViewController:");
    }

    if([UIViewController instancesRespondToSelector:@selector(automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers)] == YES) {
        NSLog(@"YES automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers");

    } else {
        NSLog(@"NO automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers");
    }
}

在 iOS 4.3 模拟器中,我看到以下输出。这两条消息都仅限于 IOS 5.0 及更高版本。 addChildViewController 似乎在 4.3 模拟器中错误响应。我没有 4.3 设备无法在实际设备上进行测试。

2011-11-18 09:55:12.161 testViewFunctionality[873:b303] YES addChildViewController:
2011-11-18 09:55:12.162 testViewFunctionality[873:b303] NO automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers

在 iOS 5.0 Simulator 中,两者都会响应,这是正确的行为。

2011-11-18 09:59:31.250 testViewFunctionality[932:f803] YES addChildViewController:
2011-11-18 09:59:31.252 testViewFunctionality[932:f803] YES automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers

我在 Lion 上使用 XCode 4.2。当我查看 4.3 模拟器框架上的 UIViewController.h 时,没有提到 addChildViewController:automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers 但唯一包含的 SDK 是 5.0。

enter image description here

我想如果你想保持谨慎,你可以在正在运行的设备上测试正在运行的 iOS 版本。参见 How to check iOS version?

关于ios - UIViewController 报告为响应 addChildViewController : on iOS 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8143033/

相关文章:

ios - 以编程方式设置约束

ios - 保持导航 Controller 的状态,只改变 View

ios - Swift - tableviewcell 中按钮的动态数量

iphone - 你能说出 Phonegap iOS 应用程序中的调试过程吗?

ios - PKPaymentAuthorizationViewController 在 iOS 8.4 上意外崩溃

iphone - 关于 UIWindow 背景的问题

iPhone:从前台/后台切换回来后重新加载 View ?

objective-c - 更改已添加到 map View 的 MKOverlay 的颜色

ios - 检查下载的 mp4 文件是否已正确下载以播放。 - 苹果手机SDK

ios - 强制 UIViewController 正确布局而不将其显示在屏幕上