【发布时间】:2025-11-26 22:10:01
【问题描述】:
我正在继承 UINavigationController 并希望添加将之前弹出的视图控制器重新添加到堆栈中的功能,类似于网络浏览器中的前进按钮。
当用户按下按钮时,我想将最近弹出的视图控制器添加回堆栈。为此,我将视图控制器置于自定义堆栈的顶部,并使用它调用 pushViewController:animated:。
在点击表格视图单元格或其他东西以进入视图层次结构的新方式的情况下,我想清除我的“弹出视图控制器”堆栈。类似于用户在 Web 浏览器中单击新链接时“转发”历史记录被清除的方式。
这就是我的问题所在。我不知道如何区分何时调用pushViewController:animated: 以恢复视图控制器,以及何时用户点击一个单元格来推送一个。在后一种情况下,我想清除我的堆栈,但在前一种情况下我不想。
我不知道在这里做什么。在一个完美的世界中,pushViewController:animated: 将有 userOptions: 参数或其他可以让我区分它的使用方式的东西,但不幸的是,该参数不存在。
这样的问题一定会经常出现。在这种情况下我将如何处理?如何区分调用该方法的情况?
【问题讨论】:
-
我不清楚这里的障碍是什么。您应该控制何时调用
pushViewController:animated;你可以事先做其他事情。当按钮被按下时,在它的 action 方法中做一件事。选择表格视图单元格后,在tableView:didSelectRowAtIndexPath:中执行其他操作。我错过了什么? -
@JoshCaswell 我希望这是一个简单的插入式
UINavigationController替换。如果我必须进入每个班级并调用自定义方法而不是每个UINavigationController使用的方法,那就不那么干净了。 -
我明白了。我认为与 CRD 的答案类似的东西将必须是你要走的路。我看不出有任何方法可以为按钮设置一个特殊的“前进”方法。
标签: ios objective-c cocoa-touch uinavigationcontroller pushviewcontroller