如何在IOS中启动新屏幕?

如何在IOS中启动新屏幕?,ios,Ios,这是一个非常简单的问题,但我不知道怎么做 我发现的第一件事是我必须添加一个导航控制器。虽然我不需要显示导航控制器,但我尝试了它。 我找到了以下教程: 还有一些,上面说,我必须将导航控制器连接到窗口对象。但是在.xib中没有窗口对象。似乎有一些更新,我在AppDelegate.m中发现了以编程方式创建的窗口对象 这是否意味着我必须以编程方式连接它们,如果是,如何连接 我正在使用Xcode 4.4.1构建5.1 然后我找到了一种hacky方法来替换这里描述的视图: 但我想知道做这件事的标准方法

这是一个非常简单的问题,但我不知道怎么做

我发现的第一件事是我必须添加一个导航控制器。虽然我不需要显示导航控制器,但我尝试了它。 我找到了以下教程:

还有一些,上面说,我必须将导航控制器连接到窗口对象。但是在.xib中没有窗口对象。似乎有一些更新,我在AppDelegate.m中发现了以编程方式创建的窗口对象

这是否意味着我必须以编程方式连接它们,如果是,如何连接

我正在使用Xcode 4.4.1构建5.1

然后我找到了一种hacky方法来替换这里描述的视图:

但我想知道做这件事的标准方法是什么

在苹果的《开发指南》中,有一些关于故事板的内容。这就是我需要的吗


如果可能的话,我需要知道如何启动一个单独的新屏幕(当然有自己的控制器和.xib),而不必在应用程序中添加导航栏。

最好的方法是使用导航控制器

在AppDelegate应用程序中,将使用选项完成启动

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:<the view controller you want to use first>];

self.window.rootViewController = self.navController;
[self.window makeKeyAndVisible];
这将隐藏该控制器的导航栏

要推送到新的视图控制器

[self.navigationController setNavigationBarHidden:YES animated:YES];
MyNewViewController *newVc = [[MyNewViewController... (set it up).

[self.navigationController pushViewController:newVc animated:YES];
这是从初始视图控制器完成的

然后再回来。在新的VC中,只需这样做

[self.navigationController popViewControllerAnimated:YES];

您永远不会真正“拥有”导航控制器,也永远不会真正看到它。它就在你的应用程序后面,管理过渡和其他内容。

如果你不想使用NavigationController,你可以显示模式视图。在这个问题中,您可以找到如何做到这一点:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    // Override point for customization after application launch.
    YourViewController *viewController = [[YourViewController alloc] init];
    navController = [[UINavigationController alloc] initWithRootViewController:viewController];
    // Add the view controller's view to the window and display.
    [window addSubview:navController.view];
    [window makeKeyAndVisible];
    return YES;
}
是否使用NavigationController显示视图取决于该视图的用途,它与您的屏幕流有关。如果您必须“深入”到一系列UITableView中,或者在到达特定屏幕之前只需浏览不同的屏幕,则应使用UINavigationController来处理该问题。看看

我个人更喜欢将故事板用于具有大量视图的应用程序,因为它可以帮助我清楚地了解它们的层次结构以及它们之间的关系

最后,这只是口味的问题。如果您想了解有关故事板的更多信息,我建议您发布以下帖子:

如果您想知道如何使用故事板创建模式视图,最简单的方法是创建一个新项目,选择选项“单视图应用程序”,并在下一个屏幕中选中选项“使用故事板”。一旦你有了它,你就必须在Xcode的项目文件夹中选择你的“MainStoryboard.storyboard”文件。然后从右下角拖动一个“视图控制器”(第一个橙色圆圈,上面有一个正方形),并将其放入已创建的情节提要旁边的情节提要中

现在您应该有两个不同的ViewController。只需从右下角拖动一个UIButton(您需要在列表中滚动以查看“Round Rect Button”选项)到第一个ViewController(左边有一个箭头指向它的那个)

最后,您必须按住Control并单击该按钮,然后将该按钮与另一个ViewController链接。完成此操作后,它将显示“动作序列”对话框。只要选择模态和瞧

以下是您的故事板的外观:

注意:我已更改了第二个ViewController的颜色,使其在切换时更加明显


我建议您先阅读raywenderlich的教程,然后按照以下步骤进行模态视图。

有些任务使用代码比使用IB更容易解决。这就是其中之一。在Android中,切换屏幕非常容易,只需两行代码。与布局文件无关。但我把“ios启动新屏幕”放在谷歌上,了解了如何在应用程序和其他无意义的应用程序中添加启动屏幕。我认为这将是一分钟,基本的东西。谷歌的问题发生了,因为它不知道如何在API之间转换。我在寻找“android推送视图控制器”时也没有得到很好的结果。:-)@Ixx我会让你失望的:在iOS中也很容易,你只是经验不足。@Phillip Mills这只是一个例子,我还放了“启动新的视图控制器”等等,但没有得到我想要的。此外,我是一个初学者,我需要一篇清晰的文章,否则我不知道我是在实现标准解决方案还是黑客。而且我也无法(很快)在苹果的《开发者指南》中找到一条清晰的语句。addSubview行给了我:由于未捕获的异常“UIViewControllerHierarchyInconsistency”而终止应用程序,原因是:“添加根视图控制器作为视图控制器的子级:'谢谢你,它真的帮助了我:)