iOS - 如何推送到 View Controller 并在返回时保持正确的 "View Stack"

标签 ios objective-c ios8

我有一个导航 Controller ,它包含应用程序的主要 View (各种仪表板),然后通过 segues 等分支到应用程序中的其他 View 。

有一个汉堡包菜单,它使用了 Cocoa Pods 滑动 View Controller 。基本上,我的问题是是否可以通过菜单导航到特定的 View Controller 并保持正确的“堆栈”返回。我知道您可以只推送到一个 Controller ,但我希望(如果可能的话)保留 View 层次结构。

例如

菜单中有一个指向 Page 1.3

的链接

我希望能够推送到Page 1.3

然后在该 View 上使用后退按钮转到 Page 1.2,然后是 Page 1.1 等等。

我不确定这是否是 iOS 应用程序中的标准做法,或者采用 Android 风格的方法并仅向堆栈添加 View 是否更好,而不用担心在它们返回时尝试形成正确的导航结构观点。

希望所有这些都有意义。

最佳答案

如果您愿意在代码中而不是使用 segue 来完成此操作,则可以使用 UINavigationController 的 setViewControllers:animated: 方法(请参阅 documentation )。您将需要实例化相关的 VC,使用任何相关数据/状态初始化它们,然后按照从 Root View Controller 到顶 View Controller 的顺序用它们构建一个数组:

NSArray *newStack = @[rootVC, ..., page11VC, page12VC, page13VC];
[self.navigationController setViewControllers:newStack animated:YES];

然后从 page13VC 弹出将转到 page12VC,等等。您可以使用导航 Controller 的 viewControllers 属性获取 rootVC 和任何其他预先存在的 VC。

关于iOS - 如何推送到 View Controller 并在返回时保持正确的 "View Stack",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27835841/

相关文章:

ios - iOS 中的 JSON 错误 : Invalid top-level type in JSON write

ios - 如何在 UIPICKERVIEW (iOS) 中获取所选行的索引号

ios - 如何使用硬件键盘在 iOS 模拟器中输入 @?

objective-c - 使用参数创建 View Controller

xcode - Cocoa 框架内静态库和动态库之间的轻松转换

ios - 在适用于 iOS 的 SceneKit 中更改 SCNSphere 的 View 侧

ios - 在后台删除的数据导致 UITableView 中的索引超出范围崩溃

iphone - 时间作为与我的值(value)进行比较的值(value)

objective-c - iOS TCP/IP 检查连接

ios - 用户事件信息如何在 Handoff 中传输?