2012-02-15 51 views
0

是否有任何其他方式可以调用UIViewCOntroller,但不包括以下内容;如何调用UIViewController

HelloUIViewController *hello = [[HelloUIViewController alloc]initWithNibName:nil bundle:nil]; 
[self.navigationController pushViewController:hello animated:YES]; 

上面的代码将设置在导航条的视图,其中(当从视图中导航以查看箭头形按钮),你会得到BackButton为好。

我只想去一个新的UiviewController,不希望它有一个返回按钮(基本viewController不应该被推到导航堆栈)

+0

你正在寻找一个[模态视图(https://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html)? – esqew 2012-02-15 21:15:31

+0

如果没有指定nib名称,您可能会遇到推送您的视图的问题。 – 2012-02-15 21:16:46

+1

@BillBrasky什么问题?如果您没有指定名称,则UIViewController的'-loadView'将查找名称与视图控制器名称相匹配的nib,即此情况下的HelloUIViewController.xib。 – Caleb 2012-02-16 01:15:03

回答

2

这应该工作:

UIWindow *window = [[UIApplication applicationDelegate] window]; 
window.rootViewController = [[HelloUIViewController alloc] initWithNibName:nil bundle:nil]; 

当然,它可能并不是你想要的。它会将视图控制器安装为窗口的根视图控制器。如果您想保留导航控制器,并在导航堆栈外显示新控制器,则需要以模态方式显示视图控制器。从另一个视图控制器,您可以:

HelloUIViewController *hello = [[HelloUIViewController alloc]initWithNibName:nil bundle:nil]; 
[self presentViewController:hello animated:YES completion:nil]; 
+1

它应该水平显示,就像pushviewcontroller一样。而不是垂直。 – sharon 2012-02-15 23:37:10

+1

你能详细说明为什么你不想把它推到导航堆栈上吗?这听起来像你希望它*看起来像它是导航堆栈的一部分,只是不显示导航栏或后退按钮。正如sch所描述的,隐藏导航栏并正常推动是简单的方法来执行您想要的操作。 – Caleb 2012-02-16 01:13:18

2

如果你不希望的导航栏,目前您的ViewController模态。

[self presentModalViewController:helloViewController animated:YES]; 
+0

请注意,iOS 5不支持此方法(请参阅https://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIViewController_Class/Reference/Reference.html)。相反,使用'presentViewController:animated:completion:'。 – kevboh 2012-02-15 21:24:38

+0

你是对的。只是记下了我记忆中的一个= p – ArtSabintsev 2012-02-15 21:34:47

+0

它应该水平显示,就像pushviewcontroller一样。而不是垂直。 – sharon 2012-02-15 23:36:27

1

您可以隐藏导航栏:

self.navigationController.navigationBarHidden = YES; 

或者,如果你想保持导航栏,但只有摆脱了后退按钮,你可以做这样的事情:

self.navigationController.backItem.hidesBackButton = YES; 
相关问题