我正在开发一款具有iPhone和iPad独立视图的多设备应用程序。在我的应用程序中,我使用的是带有四个内容选项卡的UITabBarController作为mainView 第一个选项卡包含UINavigationController,第二个选项卡包含UIViewController。第三个选项卡类似于第一个选项卡,但具有其他NIB和类文件。第四个标签就像第二个标签,但包含其他内容。
在每个viewDidLoad方法中,我向控制台写了一些内容,例如“[currentview]已加载”,并且currentview被替换为已加载视图的标识名称。
如果我在iPhone上启动我的应用程序,那么控制台会向我显示没有任何用户交互,第一个选项卡和第三个选项卡(两个UINavigationController)都已加载。详细说明第三个选项卡在第一个选项卡之前加载
如果我在iPad上启动我的应用程序,那么只有第一个选项卡才能加载。除了实现针对iPad的NIB文件外,我在我的应用程序开头使用了相同的源代码。
在AppDelegate_iPhone.m中,我只将UITabBarController.view作为子视图添加到窗口。在AppDelegate_iPad.m
中完成相同的过程我已经用Google搜索了这一点,发现调用一个controllers.view导致加载视图但是以编程方式我既不调用第一个选项卡也不调用第三个选项卡。这是由UITabBarController以他的自然方式完成的(没有为这个控制器改变任何东西)。所以我有点困惑为什么我的应用程序加载iPhone上的第三个选项卡。由于这个问题,我不得不删除在第三个选项卡的viewDidLoad中完成的一些代码,因为只有选项卡几乎要显示时,此代码才有效。
我希望任何人都有同样的问题,可以告诉我一个解决方案或者提示。
答案 0 :(得分:0)
最后我发现了我的错误
使用UITabBarController创建一个新项目,并使用给定星座的四个选项卡显示错误不是一般的错误。在意识到这一点之后,我一步一步地通过我的MainWindow_ [ver] .xib比较了iPhone和iPad版本之间的差异。
我发现在MainWindow_iPhone.xib中,第三个选项卡被声明为UINavigationController。在这个NavigationController中,我有一个UITableViewController,其内容来自通过Interface Builder链接的类/ nib。与MainWindow_iPad.xib(没有发生错误)相比,我发现我在iPad版本中使用了UIViewController而不是UITableViewController。
将iPhone版本更改为UIViewController后,错误消失了。万岁:)
要批准每次在另一个选项卡中使用UITableViewController时发生此错误,而不是第一个选项卡,我编辑了新创建的项目,并将第三个选项卡UIViewController(在UINavigationController中)更改为UITableViewController。正如预期的那样,在第一个标签之前加载了第三个标签 附加信息:虽然在MainWindow_ [ver] .xib中我声明了要加载的UIViewController,具体的实现是一个UITableViewController子类。似乎工作,因为UITableViewController是UIViewController的子类,但仍然奇怪为什么必须在MainWindow_ [ver] .xib中指定超类