使 Apple 提供的 Page Control 示例符合 iOS5 SDK 时缺少根视图控制器

Posted

技术标签:

【中文标题】使 Apple 提供的 Page Control 示例符合 iOS5 SDK 时缺少根视图控制器【英文标题】:Root view controller missing while making the Apple offered Page Control example to conform iOS5 SDK 【发布时间】:2012-03-04 19:13:54 【问题描述】:

我是ios开发的新手,所以我的问题可能有点幼稚。

我正在使用滚动视图来实现一个页面控件,该页面控件嵌入了多个子视图,并且可以滑动以更改子视图出现在屏幕上。当我浏览 iOS 开发库时,发现有一个 Apple 提供的 Page Control 示例,它是在 iOS4 上编写的,可以用于工作。我下载了它并尝试让它在我的项目上运行,该项目旨在在带有 iOS5 的 iPhone 上运行,但失败了。

项目在 iOS 模拟器上运行后控制台总是说“应用程序在应用程序启动结束时应该有一个根视图控制器”。因此,我检查了网络上几乎所有的解决方案,但都没有成功。

这是 Apple 提供的页面控制示例页面:https://developer.apple.com/library/ios/#samplecode/PageControl/Introduction/Intro.html

我已经将我的工作拆分成一个最小的项目并将其推送到 GitHub 上。这是页面: https://github.com/WeZZard/PageControl

谁能帮帮我?

【问题讨论】:

我已经解决了这个问题。从根视图控制器实现文件中删除 - (UIView *)view 方法将得到解决。似乎根视图控制器的 -(UIView *)view 方法在此文件中实现后返回错误值,这将导致情节提要的初始化出错...... 【参考方案1】:

想一想,如果您使用故事板,请确保在您的第一个视图控制器上勾选“是初始视图控制器”。

【讨论】:

谢谢。但我想我只是勾选了这个选项。让我感到困惑的是,如果我让一个项目仅在指定一个空视图控制器的情况下运行,控制台不会报告任何错误。我从默认勾选“是初始视图控制器”的单个视图模板创建所有项目。【参考方案2】:

在示例代码 appdelgate.m 文件中

- (void)applicationDidFinishLaunching:(UIApplication *)application

    NSString *nibTitle = @"PadContent";
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
    
        nibTitle = @"PhoneContent";
    
    [[NSBundle mainBundle] loadNibNamed:nibTitle owner:self options:nil];

    [self.window addSubview:self.contentController.view];
    [window makeKeyAndVisible];

您在这里看到一个正在为不同的设备加载不同的 nib(iPad 和 iPhone)。

通常在你看到的项目中

    [self.window addSubview:self.rootviewcontroller.view];

但唯一的区别是

    [self.window addSubview:self.contentController.view];

它正在使用当前笔尖加载笔尖..([[NSBundle mainBundle] loadNibNamed:nibTitle owner:self options:nil];)

所以该项目与任何其他项目相同

【讨论】:

我没有完全复制示例代码中的所有代码,尤其是 -(void)applicationDidFinishLaunching: 方法,因为我想使用情节提要来管理我的视图控制器和视图层次结构,而不是 Nib 文件。我的观点是 [self.window addSubview:self.rootViewController.view] 或 self.window.rootViewController = self.rootViewController 是解决一些问题的关键,这些问题也被称为根视图控制器缺失,通过在网络上检查解决方案但它对我的不起作用...很奇怪...它也可能发生在某些iOS4-app-upgrade-to-iOS5-app案例中。

以上是关于使 Apple 提供的 Page Control 示例符合 iOS5 SDK 时缺少根视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

Tkinter中的多个键事件绑定 - “Control + E”“Command(apple)+ E”等

如何使存储为 C# 字符串的 HTML 元素正确显示?

《iOS Human Interface Guidelines》——Page Control

图像尺寸不适用于 Page Control 和 ScrollView?

XMLHttpRequest 无法加载 https://sandbox.itunes.apple.com/verifyReceipt。 Access-Control-Allow-Origin 不允许来

iPhone Page Control 仅显示在 UIScrollView 的第一页上