iPhone - 如何将导航控制器添加到视图?
Posted
技术标签:
【中文标题】iPhone - 如何将导航控制器添加到视图?【英文标题】:iPhone - how do I add a navigation controller to a view? 【发布时间】:2011-05-12 11:40:14 【问题描述】:我目前有一个执行以下操作的应用程序:
S:加载一个视图作为登录屏幕开始。
a:如果登录成功,我会添加一个条款和条件屏幕作为子视图
b:如果不成功,我添加一个注册表单作为子视图
F: 然后我在 a 或 b 成功时加载我的应用程序的主要部分,这是应用程序的一部分,其中有一个导航控制器和一个标签栏控制器。这是在 MainWindow.xib 中设置的
S、a 和 b 也有导航栏,但没有导航控制器,因为我认为我不需要导航控制登录屏幕。
不管结果如何,我希望能够从 a 和 b 回到初始登录屏幕。
我已经尝试了几种方法,包括尝试以下答案:
How to add navigation controller in View Based Application in iPhone?
How do you properly set up a secondary view to support a navigation Controller on the iPhone?
how to add navigation controller programatically?
但它们都不适合我,它们在登录屏幕上显示新的导航控制器并且不加载 a 或 b 屏幕。
我猜这是因为我将它们作为子视图添加到我的 loginView 中,这不是正确的方法吗?我的代码如下:
if(self.tcSubViewController == nil)
TCSubViewController *_tcSubViewController = [[TCSubViewController alloc] initWithNibName:@"T&CView" bundle:[NSBundle mainBundle]];
self.tcSubViewController = _tcSubViewController;
[_tcSubViewController release];
[self.view addSubview:[tcSubViewController view]];
我猜我的登录流程存在根本缺陷?我应该能够完全删除 LoginView,然后显示条款和条件视图,而不必将其添加为子视图,不是吗?
【问题讨论】:
【参考方案1】:您需要关闭导航控制器才能返回。 关闭模式视图:
1.简单的方法:在模态视图中,在调用关闭的某些方法中添加:
[self.navigationControllerdismissModalViewControllerAnimated:YES];
2.更复杂的方式:在模态视图上实现和委托协议,并使呈现模态视图的视图控制器成为它的委托。并在委托方法中关闭模式视图。当我需要将数据从模态视图发送到显示它的控制器时,我会这样做。
Reference to this post
【讨论】:
对不起,我的意思是指定模式视图不是我想要的方式,因为我需要一个带有左侧箭头形状的后退按钮。【参考方案2】:导航控制器的理念是您只添加 navigationController.view 作为 UIWindow 子视图,它会自行管理其余部分。您只需要推送/弹出视图控制器,它们对应的视图就会自动从屏幕上添加/删除。
我当前应用程序的示例代码:
HomeController *homeController = [[[HomeController alloc] init] autorelease];
self.controller = [[[UINavigationController alloc] initWithRootViewController:homeController] autorelease];
self.controller.navigationBarHidden = YES;
[self.window addSubview:self.controller.view];
[self.window makeKeyAndVisible];
然后要推送下一个视图,您只需添加下一个控制器:
[self.navigationController pushViewController:newController animated:YES];
【讨论】:
给出错误:在 appdel 中找不到属性控制器...那个控制器是什么? 是 UINavigationController。如果你不想扩展 AppDelegate 你可以这样做: HomeController *viewController = [[HomeController alloc] init]; UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController]; self.window.rootViewController = 导航控制器;以上是关于iPhone - 如何将导航控制器添加到视图?的主要内容,如果未能解决你的问题,请参考以下文章