iOS5:如何在没有 UINavigationController 的情况下处理视图之间的导航

Posted

技术标签:

【中文标题】iOS5:如何在没有 UINavigationController 的情况下处理视图之间的导航【英文标题】:iOS5: How to handle navigation between views without UINavigationController 【发布时间】:2012-07-27 05:42:03 【问题描述】:

我正在尝试在我的 iPad 应用程序中创建一个自定义侧边栏导航窗格,例如适用于 iPad 的 Instapaper。在by Scott Sherwood 等一些优秀教程的帮助下,我能够创建自定义侧边栏并在视图控制器之间切换。

我使用根视图控制器实现了这一点,其中我有两个视图 - 一个是选项卡视图,另一个代表与所选选项卡关联的内容,类似这样...

每当我选择标签时,我都会向Root View Controller 添加一个子视图,就像这样...

@implementation RootViewController

//
// some code here
//

#define TABBAR_WIDTH 80.0F
- (void)buttonTapped:(UIButton *)aButton

    UIViewController *newVC = [self.storyboard instantiateViewControllerWithIdentifier:@"SomeView"];
    [newVC.view setFrame:CGRectMake(TABBAR_WIDTH, 0, self.view.bounds.size.width - TABBAR_WIDTH, self.view.bounds.size.height)];
    [self addSubView:newVC.view];

现在我要做的是将一个新视图推送到Contents,而不是基于选项卡选择,而是基于内容视图中的一些交互。我想出的方法是向超级视图添加另一个子视图。但是,在这种情况下,我将不得不自己实现视图之间的推送、弹出、返回按钮和动画。

我想知道我是否可以使用 UINavigationController 来实现这个场景(以便自动神奇地处理推送、弹出、返回按钮)。

有人能解释一下这个话题吗?甚至可以简要概述一下如何在 Instapaper iPad app 中实现这一点会有所帮助。

【问题讨论】:

【参考方案1】:

您需要在容器视图中导航。

所以你可以用这个东西:

    拥有一个以您的 content1 视图控制器作为根控制器的 navigationController(alloc-init-set frame-navigation bar hidden 等)。 在 Content1 视图控制器中,在点击按钮事件时,只需将导航控制器推送到 Content2 视图控制器,并对弹出事件执行相同操作

Alloc - 在您的根控制器中初始化您的导航控制器,您可以在 xib 中拥有自定义选项卡和容器视图...

注意:在添加任何其他视图之前清除您的容器视图。

我已经完成了这个场景,所以它对我来说很好。

希望这是您所需要的...

享受编码:)

【讨论】:

所以你是说我不是在root的视图中添加子视图,而是在rootVC的导航控制器上推送视图控制器?推送视图控制器时,自定义标签栏视图如何保持可见? No no.. 首先将您的 contentview1 添加到 navigationController (在根视图控制器类中的 alloc init)。然后将该 navController 添加到 root 的 containerView 作为添加子视图。现在在 contenView1 中,您可以像拥有 navigationcontroller 一样推送到其他 viewController。 你能投同样的票吗,如果你满意,那么也做赏金工作..提前谢谢... :) 已经投了赞成票。 :) 奖励赏金需要一些时间(我猜大约一天左右)。

以上是关于iOS5:如何在没有 UINavigationController 的情况下处理视图之间的导航的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ios5 的 UIViewController 中显示 UIView?

当我们在 ios5.1、ios6 等其他操作系统版本中拥有应用程序时,如何在 ios5 模拟器中启动应用程序?

如何在iOS5中发送电子邮件到后台的收据?

如何获取警报通知以使用 Phonegap 1.1.0 和 iOS5

iOS5 自定义窗口旋转问题

我没有在 ios5 中获取照片库