iphone NavigationController 清除视图堆栈

2023-12-31

我有一个使用导航控制器的 iPhone 应用程序。在该控制器中我推送了一些视图。在某些情况下,我想“清除”视图堆栈,只保留堆栈中导航控制器的 rootViewController 并推送我拥有的另一个 viewController 。

有人可以给我一个如何做到这一点的例子吗?我没有看到任何清除堆栈的方法。


答案1: 我尝试在按钮操作中放入以下代码:

[self.navigationController popToRootViewControllerAnimated:NO]; 

 do some stuff here to prepare for the push.

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

但它只弹出到roorController。它不会推送我想要的其他 viewController。


以下代码将允许用户深入视图层次结构,并在按下按钮时弹出回根视图控制器并推送新视图。

DetailViewController.m ~ 从中清除导航堆栈的视图控制器:

- (IBAction)buttonPressed:(id)sender {
    [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"popBack" object:nil]];
}

上面的代码调用了NSNotificationCenter,发布一条通知,RootViewController 在听到时可以做出反应。但首先,RootViewController 必须注册才能接收通知。

根视图控制器.m

- (void)viewDidLoad
{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pushViews) name:@"popBack" object:nil];
    [super viewDidLoad];
}

接下来,RootViewController 必须设置引用的选择器-pushViews.

- (void)pushViews {
     //Pop back to the root view controller
     [self.navigationController popToRootViewControllerAnimated:NO];

     //Allocate and init the new view controller to push to
     NewViewController *newVC = [[NewViewController alloc] init];

     //Push the new view controller
     [self.navigationController pushViewController:newVC animated:YES];
}

请确保当您致电时-popToRootViewControllerAnimated:,您指定NO用于动画。启用动画会导致导航栏动画出现问题并使系统混乱。上面的代码在调用时会清除导航堆栈,只留下 RootViewController,然后添加 NewViewController。

您的初始代码未完全执行的原因是因为调用后-popToRootViewController:从 DetailViewController 开始,RootViewController 的方法占用了主线程,并且 DetailViewController 被释放。因此,没有从该视图控制器运行进一步的代码。使用上面的代码,导航堆栈将弹回到正在加载的同一视图控制器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iphone NavigationController 清除视图堆栈 的相关文章

  • 检测 UITableView 中的水平平移

    我正在使用 UIPanGestureRecognizer 来识别 UITableView 中的水平滑动 准确地说是在单元格上 尽管它已添加到表格本身 然而 这个手势识别器显然窃取了桌子上的触摸 我已经让 pangesturerecogniz
  • NSSortDescriptor 和多对多关系

    我有两种反对意见 地点和历史项目 我正在尝试获取附加到任何历史记录项目的位置 因此该位置的获取谓词是 history count gt 0 效果很好 我还想使用 NSSortDescriptor 按最新历史项目的日期对位置对象进行排序 据我
  • iPhone UIViewController 中的 UIPickerView

    我有一个 xib 其中添加了一个UIViewController名为德尔塔 delta 下的视图由 delta viewcontroller 控制 而不是由文件所有者控制 在三角洲视图中 我有一个UIViewPicker 我的问题是我正在编
  • UITableViewController 无法识别的选择器发送到实例

    当我传递一个整数时 我有一个 tableviewcontroller 和一个detailtableviewcontroller UITableViewController setSurveyNumber 无法识别的选择器发送到实例 Biza
  • 保存一页数据并将该数据添加到 tableView

    大家好 我有 2 个视图 第一个有 UITableView 第二个有一个文本字段 当用户按下第二页上的 保存 按钮时 我希望将文本字段文本添加到 tableView 中 这是我正在使用的代码 IBAction saveButton id s
  • 获取 UIView 的视图控制器(iphone)

    我这样做是为了获得视图 self superview viewWithTag 10 但我怎样才能获得该视图的视图控制器 就像您可以获得视图控制器的视图一样 我想采用另一种方式 以便我可以向该视图控制器发送消息 调用方法 例如 self su
  • Kohana 3.1 中的模板

    我几个月前就用过它们 然后我改用燃料 然后我又切换回 Kohana 问题 我忘记了如何正确使用模板 我的意思是Controller Template 有教程 http kohanaframework org 3 1 guide kohana
  • iPhone iOS 是否有用于类似代数计算器的应用程序的表达式解析器?

    我正在构建一个应用程序 可以通过加速度计和陀螺仪输出来分析手机的运动 我很可能会将这个动作捕获为一组变量 应用程序将在内部跟踪这些变量 我试图提供一种方法来绘制这些变量和涉及这些变量的方程 我想让用户能够通过输入 a b c d 等方程 其
  • 在 Eclipse 中导航 Java 调用堆栈

    在调试器中像GDB http sources redhat com gdb 当您在断点处停止时 您可以轻松地向上移动调用堆栈并检查相关的源和堆栈帧数据 在 Eclipse 中如何做到这一点 In the 调试视角 http www ibm
  • 用dagger 2查看依赖注入

    我有一个自定义视图扩展TextView 我应该在哪里调用我的组件来注入视图 component inject customTextView 因此 我发现我需要在自定义视图的构造函数中添加注入 在所有视图中 或者使一个调用另一个 Exampl
  • 更改 UIActionSheet 标题字符串的字体类型和大小

    我有一个带有标题字符串 DO 这些任务 的 UIActionSheet 在标题字符串中 子字符串 DO 应为粗体 具有特定字体大小 子字符串 这些任务 应为常规 是否可以 我怎样才能做到这一点 我假设你有一个类实现了UIActionShee
  • Navicat 中的 MySQL 视图 - 如何定义“主键”?

    当我在 Navicat 中定义视图时 经常会收到以下消息 xxx 没有主键 对此表的更新将使用以下伪语句完成 UPDATE xxx SET ModifiedFieldsAndValues WHERE AllFieldsAndOldValue
  • Xcode 5 - clang:错误:链接器命令失败,退出代码 1(使用 -v 查看调用)

    I am facing a linker error when running my source code I have attached a screenshot also I am new in iOS development and
  • iPhone 存储图像的最佳方式

    我正在开发一个应用程序 需要缓存一些来自网络的图像 图像可能是 100x100 我只需要知道哪个更好 将图像作为文件存储在 iPhone 文件系统中 将它们作为 blob 与已保存在数据库中的其他数据一起存储在 sqlite 数据库中 感谢
  • Health 处理多个步骤源的方式与 HealthKit 不同——swift

    我的 Swift iOS 应用程序与 HealthKit 连接 向用户显示他们当天到目前为止已经走了多少步 在大多数情况下 这是成功的 当步数的唯一来源是 iPhone 内置计步器功能记录的步数时 一切正常 并且我的应用程序显示的步数与健康
  • 如何在iPhone应用程序中创建折线图? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 我们可以在 Objective-C 中创建可空/非空属性吗?

    我们可以在 Objective C 中创建可空 非空属性吗 如果可以 那么如何创建 您可以使用 Nullable and Nonnull预选赛 property copy nullable NSString name property co
  • 模拟 Push Segue 的自定义 Segue 将 VC 变成僵尸

    使事情简短明了 我写了一个自定义的segue void perform UIView preV UIViewController self sourceViewController view UIView newV UIViewContro
  • 在UIView中画线

    我需要在 UIView 中画一条水平线 最简单的方法是什么 例如 我想在 y coord 200 处画一条黑色水平线 我没有使用界面生成器 也许这有点晚了 但我想补充一点 有更好的方法 使用 UIView 很简单 但相对较慢 此方法会覆盖视
  • 如何在 iPhone 上获取移动国家/地区和网络代码

    有什么方法可以在 iPhone 上获取 mnc 和 mcc 号码吗 您需要 CoreTelephony 框架 CTTelephonyNetworkInfo networkInfo CTTelephonyNetworkInfo alloc i

随机推荐

  • 如何开发、构建和部署多个基于 OSGi 的 Web 应用程序

    我正在寻找一种方法来开发 构建和部署多个基于 OSGi 的 Web 应用程序 一些 RAP 首先 我使用从以下位置克隆的 RAP 示例 https github com eclipse rap git https github com ec
  • 如何在ES中使用数组映射?

    我想创建一个映射movies看起来像 title The Artist genres Drama Comedy In the ElasticSearch 文档 https www elastic co guide en elasticsea
  • Rust 中的指针和引用有什么区别?

    一个指针 和一个参考 在 Rust 中共享相同的表示 它们都表示一段数据的内存地址 编写代码时有什么实际差异 将 C 代码移植到 Rust 时 是否可以安全地替换它们 C 指针 gt rust 指针 C 引用 gt rust 引用 可以时使
  • GDB使用什么信号来实现tracee和tracer之间的控制传递

    通过控制转移 我的意思是 在tracee执行函数并返回后 会生成哪个信号以便GDB可以在其上等待 并再次夺取控制权 尽管很多人声称这不是 SIGTRAP 在tracee执行函数并返回后 会生成哪个信号以便GDB可以在其上wait 并再次夺取
  • C#中的无锁会话有哪些?

    我了解 C 中的会话以及如何定义它们 但今天我听到一个词Lock free session 我用谷歌搜索但没有得到任何与我的问题完全匹配的答案 谁能解释一下 C 中的无锁会话以及如何为它们编写代码 以下是一些内容来自msdn http ms
  • 如何使动态创建的div可编辑

    我要实现div创建的可编辑动态地 这也是可拖动的 div 这就是我尝试过的 1 divid attr contentEditable true 2 divid live click function this click contentEd
  • 获取 glFrustum 的坐标

    我刚刚开始阅读有关OpenGL主题 特别是关于Viewing http glprogramming com red chapter03 html以满足我目前的需求 我试图理解glFrustum根据我的理解 对我在屏幕上绘制的对象进行透视投影
  • 从 JVM 上的堆栈帧获取局部变量

    有没有办法在不使用调试器的情况下在 JVM 上获取当前范围内的局部变量的映射或其他数据结构 即获取当前栈帧的局部变量 我知道有堆栈跟踪对象 但是StackTraceElement无法访问任何状态 它只是告诉您在哪里调用了什么方法 但不告诉您
  • 无法设置 Content-Type 标头

    我在 HttpClient 上设置 Content Type 时遇到问题 我沿着这个问题 如何为 HttpClient 请求设置 Content Type 标头 https stackoverflow com questions 10679
  • 计算机编程艺术中approximateEqual和essentialEqual的区别

    我从其他地方得到这个代码片段 据站长介绍 代码摘自 由于我没有那本书 请问这两个函数有什么区别 bool approximatelyEqual float a float b float epsilon return fabs a b lt
  • C# 接口和 Haskell 类型类之间的区别

    我知道这里有一个类似的问题 但我想看一个例子 它清楚地表明 你不能做什么interface并且可以使用 Type Class 为了进行比较 我给你一个示例代码 class Eq a where a gt a gt Bool instance
  • 如何在Python中使用pdfminer从在线PDF中提取文本

    我想使用 pdfminer 使用下面的代码从在线 PDF 中提取文本 它没有显示错误 但输出什么也没有 from pdfminer pdfpage import PDFPage from urllib import request from
  • 如何在 Android 中将文件上传到 Cloudinary 时显示进度?

    我实现了将文件上传到Cloudinary的功能 Cloudinary cloudinary new Cloudinary Constants CLOUDINARY URL try FileInputStream is new FileInp
  • Python - Windows - 当“不相关”父进程死亡/崩溃时退出子进程

    经过一番研究后 对于如何让子进程了解父进程在 Windows 下已死亡 崩溃 退出这可以使子进程在无人值守的情况下运行 没有明确的答案 有一些建议如下 Jobs Python 当父进程死亡时如何杀死子进程 https stackoverfl
  • 如何更改 ListView 项目在焦点和单击时的颜色

    我的应用程序中有一个列表视图 这是 xml 布局
  • 日期上的 Asp.net LINQ groupby 和 orderBy 未检索预期输出

    我正在使用 linq2sql 开发 asp net mvc3 应用程序 我有一个 SiteLog 对象类型列表 其中还包含每个对象 名为 CLRExceptionType 的字符串和名为 EntryDate 的日期 该列表包含在字典中 pr
  • Python Kivy不会使用SDL2,坚持使用pygame

    我努力做Kivy https kivy org 1 11 0 使用SDL2 on 乌班图18 04桌面 它不断要求pygame但这已被弃用 我不想将其用于新项目 在全新的Ubuntu 18 04 虚拟机这就是我所做的 sudo apt in
  • 许多 URI 语法中“://”的起源 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 谁都知道 或者 来自大多数 URI 语法 例如 为什么不写成 http www example com a1kmm 的答案对于 URL 的特定应用很有
  • IIS AppPoolIdentity 和文件系统写入访问权限

    这是 IIS 7 5 和 ASP NET 的一个问题 我一直在研究但毫无进展 任何帮助将不胜感激 我的问题是 在 IIS 7 5 中使用 ASP NET IIS 和 或操作系统如何允许 Web 应用程序写入类似的文件夹C dump在完全信任
  • iphone NavigationController 清除视图堆栈

    我有一个使用导航控制器的 iPhone 应用程序 在该控制器中我推送了一些视图 在某些情况下 我想 清除 视图堆栈 只保留堆栈中导航控制器的 rootViewController 并推送我拥有的另一个 viewController 有人可以