【问题标题】:Load different initial view controller xcode 5 ios 7加载不同的初始视图控制器 xcode 5 ios 7
【发布时间】:2014-07-07 16:58:20
【问题描述】:

我现在正在构建一个应用程序,95% 的应用程序基于 SplitViewController,它从另一个视图控制器的字符串中加载 tableView 内容。现在我的初始视图控制器是SplitViewController,但是一旦我改变它,这个代码就会导致我的AppDelegate.m出现问题:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    UISplitViewController *splitviewController = (UISplitViewController *)self.window.rootViewController;
    UINavigationController *navigationController = [splitviewController.viewControllers lastObject];
    splitviewController.delegate = (id)navigationController.topViewController;
    return YES;
}

如果我删除它,SplitViewController 显然无法正常工作。我试过这个,只是想看看其他一切是否可行;新的初始视图控制器已成功加载 - 但是一旦我按下一个按钮以再次模态到SplitViewController,此代码将归咎于以下消息:

#import <UIKit/UIKit.h>

#import "AppDelegate.h"

int main(int argc, char * argv[])
{
@autoreleasepool {
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}

例外情况
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“应用程序试图以模态方式呈现拆分视图控制器。”

关于如何解决这个问题的任何想法?非常感谢您的帮助!

编辑:

我发现了这个: 将您的 splitView 设置为您的应用程序的 rootView,在启动时以模态方式呈现您的 singleView,并且只要您想关闭它以让 splitView 拥有控制权。与让您的 singleView 呈现 splitView 具有相同的效果。

我也是这么想的。这是一个可行的解决方案吗?苹果会在测试期间批准它吗?

【问题讨论】:

  • 这行代码splitviewController.delegate = (id)navigationController.topViewController; 可能是导致您的问题的原因。据我所知,这并没有给你设置splitViewControllers 代表。尝试将您的 delegate 分配到您的 viewController 而不是 AppDelegate

标签: ios objective-c uiviewcontroller uisplitviewcontroller


【解决方案1】:

问题是您不能继续使用SplitViewController。不幸的是,整个应用程序需要基于您拥有的SplitViewController,否则您需要在没有控制器的情况下重新创建应用程序。

更多信息请参见this question

【讨论】:

  • 哦,那真的很糟糕。有没有办法继续使用 SplitViewController?解决方案是否可以在启动时导航到另一个 View Controller,然后关闭它,“向后”导航?
  • 我不是 100% 确定你的意思,但文档说明 A split view controller must always be the root of any interface you create.
  • 不是让初始视图控制器不是 splitview,而是将 splitview 设为初始值,但在启动时导航到假初始值。在 viewDidLoad 方法上。这样看起来另一个 viewcontroller 是初始的,即使 splitview 是
  • 我的应用有一个项目视图(新的“初始”视图控制器),一旦用户选择了一个项目,它应该打开 SplitViewController
  • 我做了我(试图)解释的事情 ;) - 结果证明效果很好:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-09
  • 1970-01-01
  • 2019-09-14
  • 1970-01-01
  • 1970-01-01
  • 2012-07-18
相关资源
最近更新 更多