UINavigationController 用另一个改变子视图

Posted

技术标签:

【中文标题】UINavigationController 用另一个改变子视图【英文标题】:UINavigationController change child view with another 【发布时间】:2010-07-29 14:52:28 【问题描述】:

我在导航控制器中有以下结构

RootViewController
         |
         |--FirstViewController
         |
         |--SecondViewController

如何在不显示RootViewController 的情况下直接从FirstViewController 跳转到SecondViewController。我想在FirstViewController 的 NavigationBar 上添加一个按钮,例如“转到 SecondViewController”。

【问题讨论】:

【参考方案1】:

在相应按钮的操作方法中,初始化SecondViewController,然后组装一个由两个元素组成的NSArray:RootViewController和新初始化的SecondViewController(按此顺序,即Root在索引0和@ 987654326@ 在索引 1)。

然后调用 NavigationController 的 setViewControllers:animated: 方法,并将视图控制器数组作为第一个参数传递。请记住在调用此方法后releaseSecondViewController,或在初始化时autorelease,以避免内存泄漏。

澄清一下,这将导致 FirstViewController 被 NavigationController 释放。

示例:

- (void) goToSecondViewController

    RootViewController *root = [[self.navigationController viewControllers] objectAtIndex:0];
    SecondViewController *second = [[[SecondViewController alloc] init] autorelease];
    NSArray *controllersArray = [NSArray arrayWithObjects: root, second, nil];

    [self.navigationController setViewControllers:controllersArray animated:YES];

参考:UINavigationController Class Reference

【讨论】:

今天是否保持最新状态? (2012 年 6 月)我不是在问这是否可行,而是在问当前的 SDK 是否不赞成这样做。

以上是关于UINavigationController 用另一个改变子视图的主要内容,如果未能解决你的问题,请参考以下文章

用另一个输入值自动填充输入

用另一个动画大小更改替换子视图

用另一个 ROI 替换 ROI

用另一个 NSAttributedString 替换 NSAttributedString 的子字符串

用另一个实体过滤实体

用另一个实例的方法装饰一个实例的方法