【问题标题】:UINavigationController going directly to 'next' controller?UINavigationController 直接进入“下一个”控制器?
【发布时间】:2023-03-04 19:18:01
【问题描述】:

我有一个具有 3 个层次结构的 UINavigationController:Menu->Submenu->Details。 Menu 和 Submenu 是 UITableViews 而 Details 是一些自定义视图控制器。

我想在详细信息视图中添加“上一个”和“下一个”按钮,这样我就可以直接从当前子菜单转到上一个和下一个项目。

例如,假设我有:

|Menu    |M1 Submenu |SM2 Details
--------------------------------
M1  ->   |SM1        |D1
M2       |SM2   ->   |D2
M3       |SM3        |D3  // Let's say we are here now
                     |D4
// ... etc ...

// The arrows represent items the user selected

假设应用当前正在显示 D3 详细信息视图控制器。这意味着我们目前处于 M1->SM2->D3。现在在 D3 中,如果用户按下“下一步”按钮,它应该显示 D4。同样,如果她/他按下“上一个”按钮,它应该显示 D2。

因此,“下一个”和“上一个”按钮的作用与按下导航控制器的后退按钮然后选择列表中的下一项基本相同。

实现这一点的最佳方法是什么?我是否必须弹出回子菜单然后推送另一个详细信息控制器?我是否直接从详细信息视图控制器调用子菜单控制器(如果是这样的话)?

谢谢。

【问题讨论】:

    标签: iphone uinavigationcontroller


    【解决方案1】:

    真的没有必要调用父控制器。您可以执行以下操作:

    假设您在子菜单控制器中保留一个“详细”项目数组,而不是使用所选项目初始化详细控制器,而是使用数组和所选索引对其进行初始化。

    然后,当按下 prev/next 按钮时,更改所选索引并相应地更新视图。

    【讨论】:

    • 如果我理解正确,您是说我在 Details 控制器中有对 Submenu details 数组的引用?如果不是,那么我如何告诉 Submenu 控制器将下一个数组项传递给我?也许我错过了什么。
    • 没错,在 details 控制器中保留对 details 数组的引用。您可能还想在详细信息控制器的 viewWillDisappear 中更改子菜单控制器上的选定索引。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    • 2017-03-01
    相关资源
    最近更新 更多