2012-11-18 128 views
4

这是一个非常简单的问题,但我不知道该怎么做。如何在IOS中启动新屏幕?

我发现的第一件事情是我必须添加一个导航控制器。虽然我不需要显示导航控制器,但我尝试过。 我发现这些教程: http://www.ralfebert.de/tutorials/iosdev/navigationcontroller/

http://www.techotopia.com/index.php/Creating_a_Navigation_based_iOS_4_iPhone_Application_using_TableViews

http://iosmadesimple.blogspot.de/2012/09/navigation-based-project-doing-it-using.html

和其他人,在那里说,我有导航控制器窗口对象连接。但在.xib中没有窗口对象。似乎有一些更新,我发现AppDelegate.m

程序创建的窗口对象是否意味着我得去编程,连接如果是,怎么样?

我使用的Xcode 4.4.1建设5.1。

后来我发现哈克的方式,以取代此处描述的观点:http://fuelyourcoding.com/ios-basics-how-to-load-a-uiview-without-a-navigation-controller/

但我想知道什么是做它的标准方式。

在苹果的开发者指南是一些关于故事板。那是我需要的吗?

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

+0

使用代码比使用IB更容易解决任务。这是其中之一。 – 2012-11-18 13:20:27

+0

那么,在Android中,使用两行代码切换屏幕非常简单。与布局文件没有关系。但是我在Google上放置了“ios推出新屏幕”,并获得了如何将闪屏添加到应用程序和其他非意义上。我认为这将是1分钟,基本的东西。 – Ixx

+2

Google问题发生是因为它不知道如何在API之间进行翻译。我在寻找“android push view controller”时也没有得到很好的结果。 :-) –

回答

4

要做到这一点,最好的办法是使用导航控制器。

在AppDelegate中applicationWillFinishLaunchingWithOptions把这个...

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

self.window.rootViewController = self.navController; 
[self.window makeKeyAndVisible]; 

这将启动您的应用程序与NavigationController,你首先看到的将是您的初始视图控制器。

要隐藏栏...

在您的初始视图控制器viewWillAppear中的一部分......

[self.navigationController setNavigationBarHidden:YES animated:YES]; 

这将隐藏该控制器的导航栏。

推向一个新的视图控制器...

MyNewViewController *newVc = [[MyNewViewController... (set it up). 

[self.navigationController pushViewController:newVc animated:YES]; 

这是从最初的视图控制器来完成。

然后弹出回来。在新的VC只是这样做...

[self.navigationController popViewControllerAnimated:YES]; 

你永远不会真正“拥有”导航控制器,你永远不会真的看到它。它只是在你的应用程序后面管理转换和东西。

+0

这工作得很好,谢谢! – Ixx

+0

不用担心。乐于帮助。 – Fogmeister

+0

谢谢你,这真的帮助我:) –

0
- (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; 
} 
+0

addSubview线给我:由于未捕获异常'UIViewControllerHierarchyInconsistency',原因:'作为视图控制器的子级添加一个根视图控制器' – Ixx

1

如果您不想使用NavigationController,则可以显示模态视图。在这个SO问题中,你可以找到如何去做:Present and dismiss modal view controller

使用NavigationController呈现视图取决于视图的目的,它与你的屏幕流有关系。如果你不得不“钻取”到一系列UITableView中,或者在到达特定的屏幕之前浏览不同的屏幕,你应该使用UINavigationController来处理它。看看http://developer.apple.com/library/ios/#documentation/uikit/reference/UINavigationController_Class/Reference/Reference.html

我个人喜欢使用StoryBoards应用程序有相当多的意见,因为它帮助我有一个清晰的“图片”他们的层次结构以及每个之间的关系。

最后,这只是一个品味问题。如果你想了解更多关于StoryBoards,我推荐你这个帖子:http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1

如果你想知道如何创建一个StoryBoards的模态视图,最简单的方法来显示它是通过创建一个新的项目,选择选项“单一视图应用程序”并在下一个屏幕中检查选项“使用情节串联板”。一旦你有了,你必须在Xcode的项目文件夹中选择你的“MainStoryboard.storyboard”文件。然后从右下角拖动一个“视图控制器”(第一个带有正方形的橙色圆圈),然后将其放入您的StoryBoard中,旁边是已经创建的那个。

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

最后,你必须按住Ctrl +单击该UIButton并将该按钮与其他ViewController链接。一旦你这样做,它将呈现“行动塞格”对话框。只要选择莫代尔和瞧!

这是你的故事板应该如何看起来像:

modal view controller

注意:我已经改变了第二的ViewController的颜色,使其开关更加明显。

我建议你先阅读raywenderlich的教程,然后按照这个步骤做你的模态视图。