如何配置应用程序以便找到根视图控制器?

时间:2011-11-15 22:10:47

标签: objective-c ios

我是新手,正在进行一项练习,其中包括从基于导航的模板开始。由于我运行的Xcode 4.2不再具有该模板,因此我开始使用空的应用程序模板,然后复制已完成的应用程序的目录结构。

由于空app模板仅以AppDelegate.h,.m文件启动,因此我开始添加其他所需文件,包括MainWindow.xib和RootViewController.h,.m文件。做了一些#import指令的调整,以便它可以看到正确的文件,并且可以正常启动。

然而,当我尝试在iOS模拟器上运行它时,我得到了这样的消息:应用程序在应用程序启动结束时应该有一个根视图控制器 终止以响应SpringBoard的终止。 程序以退出代码结束:0

我需要进行哪些其他更改才能让应用程序看到RootViewController? 谢谢。

5 个答案:

答案 0 :(得分:1)

-[AppDelegate application:didFinishLaunchingWithOptions:]中,您需要设置窗口的rootViewController属性。

答案 1 :(得分:1)

您需要设置rootViewController AppDelegate的{​​{1}}属性:

_window

要在XCode 4.2中启动传统的基于导航的项目,我发现从单视图模板开始更容易。然后,在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { _window.rootViewController = self.myNavigationController; [_window makeKeyAndVisible]; return YES; } 中,我将生成的AppDelegate替换为UIViewController

答案 2 :(得分:0)

self.window.rootViewController=self.yourviewControollerobj

答案 3 :(得分:0)

你可以像这样设置。首先设置窗口边界,然后添加带有根视图控制器的导航控制器。

  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

        self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]];

        MainViewController *vc = [MainViewController new];
        /*
        * If you are using .xib you should create UIViewontroller like this
        * MainViewController *vc = [MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil]
        */

        UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:vc];

        [self.window setRootViewController:self.nc];

        [self.window makeKeyAndVisible];

        return YES;
    }

答案 4 :(得分:-2)

class Forecast extends React.Component {
  state = {
    today: {},
    secondDay: {},
    thirdDay: {},
    fourthDay: {},
    fifthDay: {}
  };

  async componentDidUpdate() {
    ********** A bunch of logic in here to extract Weather API response 
into 5 separate arrays which will each be sent to the <Day /> child components
after setting the state to those arrays(which doesn't work in this 
life-cycle method, currently) **********

  }

  render() {
    return (
      <div className="forecast">
        <Day forecast={this.state.today} />
        <Day forecast={this.state.secondDay} />
        <Day forecast={this.state.thirdDay} />
        <Day forecast={this.state.fourthDay} />
        <Day forecast={this.state.fifthDay} />
      </div>
    );
  }
}