【问题标题】:Make a new defaut start viewcontroller创建一个新的默认启动视图控制器
【发布时间】:2014-05-26 20:57:24
【问题描述】:

我在网上购买了一个测验应用程序模板,当应用程序启动 MainViewController 时,它上面有问题类别。我想添加一个主菜单,但是当我添加一个新的视图控制器(称为 MenuViewController.h、.m 和 xib)时,我不知道如何将其设置为默认的 ViewController。我也没有使用故事板,每个 ViewController 都有 .xib 文件。请帮忙。

这是 AppDelegate.m 中的内容

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.

    DefaultSHKConfigurator *configurator = [[QuizSHKConfigurator alloc] init];
    [SHKConfiguration sharedInstanceWithConfigurator:configurator];

    MainViewController *mainViewController = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
    UINavigationController *navigationController = [[[UINavigationController alloc] initWithRootViewController:mainViewController] autorelease];
    [mainViewController release];
    self.window.rootViewController = navigationController;
    self.window.backgroundColor = [UIColor blackColor];
    [self.window makeKeyAndVisible];
    return YES;
}

【问题讨论】:

  • 检查appdelegate.m 文件。设置mainViewController 的代码可能在applicationDidFinshLaunchingWithOptions 方法中。
  • 能把applicationDidFinshLaunchingWithOptions:方法里写的代码贴出来吗?
  • 好的,我添加了 AppDelegate.m 中的代码

标签: ios xib viewcontroller


【解决方案1】:

这是您的代码描述的内容:

MainViewController 的实例被设置为UINavigationController 实例的内容视图控制器。 UINavigationController 的这个实例被设置为 UIWindow 的根视图控制器(让您的应用程序在屏幕上显示自己的主要组件)。

从概念上讲,它看起来像这样:
MainViewController -> UINavigationController -> UIWindow -> 显示在屏幕上。

如果您想更改“默认”内容,您需要将MainViewController 替换为您的类别视图控制器或绕过UINavigationController 并将UIWindow 的根视图控制器设置为您的类别视图控制器.

所以基本上:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.

    DefaultSHKConfigurator *configurator = [[QuizSHKConfigurator alloc] init];
    [SHKConfiguration sharedInstanceWithConfigurator:configurator];

    MenuViewController *menuViewController = [[MenuViewController alloc] initWithNibName:@"MenuViewController" bundle:nil];
    UINavigationController *navigationController = [[[UINavigationController alloc] initWithRootViewController:menuViewController] autorelease];
    [mainViewController release];
    self.window.rootViewController = navigationController;
    self.window.backgroundColor = [UIColor blackColor];
    [self.window makeKeyAndVisible];
    return YES;
}

或者:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.

    DefaultSHKConfigurator *configurator = [[QuizSHKConfigurator alloc] init];
    [SHKConfiguration sharedInstanceWithConfigurator:configurator];

    MenuViewController *menuViewController = [[MenuViewController alloc] initWithNibName:@"MenuViewController" bundle:nil];
    self.window.rootViewController = menuViewController;
    self.window.backgroundColor = [UIColor blackColor];
    [self.window makeKeyAndVisible];
    return YES;
}

【讨论】:

  • 我修改了代码,我使用的是 CategoriesViewController 而不是你的 MenuViewController 类。
【解决方案2】:

您可以通过转到 AppDelegate.m 的顶部并添加来显示 MenuViewController.h #import "MenuViewController.h"

然后在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions

你应该替换 MainViewController *mainViewController = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];

通过 MenuViewController *mainViewController = [[MenuViewController alloc] initWithNibName:nil bundle:nil];

【讨论】:

  • 感谢您的帮助...我已将一切准备就绪。我添加了 MenuViewController *mainViewController = [[MenuViewController alloc] initWithNibName:nil bundle:nil];到我的 AppDelegate.m 但现在我得到一个线程 1:signal SIGABRT issue one { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-08
  • 2010-09-21
  • 2015-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多