【问题标题】:UINavigationController not showing a Next button when viewcontrollers are set programmatically以编程方式设置视图控制器时,UINavigationController 不显示下一步按钮
【发布时间】:2013-11-19 00:47:59
【问题描述】:

在 prepareForSegue 方法中,我以模态方式推送 UINavigationController。我使用视图控制器数组为 UINavigation 控制器设置 viewControllers 数组,该数组填充在基于自定义初始化程序的自定义对象中。最初,我得到了带有所有 UIViewContorllers 的 UINavigationController 但 UINavigationConotrller 在数组中的最后一个 viewcontroller 开始,只有一个后退按钮。我添加了 popToRootViewControllerAnimated 行,现在 UINavigationController 从第一个 UIViewController 开始,但没有下一步按钮?如何让下一个按钮出现在 NavigationBar 中以浏览视图控制器?

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

NSNumber *switchOn = [NSNumber numberWithBool:self.blueSwitch.on];

PBVslideViews *slideViews = [[PBVslideViews alloc] initWithQuestionareResults:switchOn];
PBVpressentationNavigation *slides = (PBVpressentationNavigation  
*)segue.destinationViewController;
[slides setViewControllers:slideViews.slideViews animated:YES];
[slides popToRootViewControllerAnimated:YES];
}

【问题讨论】:

    标签: ios objective-c uiviewcontroller uinavigationcontroller uinavigationbar


    【解决方案1】:

    UINavigationControllers 没有“下一步”按钮。

    UINavigationController 维护一个控制器堆栈,而不是一个数组。当您将许多控制器推入堆栈时,您会看到最上面的一个。当您调用 -popToRootViewControllerAnimated: 时,它会删除根控制器上方的所有控制器,在堆栈中只留下一个控制器。

    您可以添加自己的“下一步”按钮并根据需要将控制器推送到堆栈中,但这种界面似乎会让 iOS 用户感到困惑。


    查看iOS HIG Navigation 部分的替代方案:

    使用导航栏为用户提供一种遍历数据层次结构的简便方法。

    ...

    使用标签栏显示多个同类内容或功能类别。

    ...

    当每个应用程序屏幕代表相同类型项目或页面的单个实例时,请使用页面控件。

    实际上哪个更适合您显示的信息?

    【讨论】:

    • 感谢您的建议。在稍微研究了一下情况后,我发现这是完全正确的,在这里利用标签栏效果更好,也更干净。
    【解决方案2】:

    UINavigationController 上的 Next 按钮没有内置功能,您必须将按钮添加到每个视图控制器中的导航项,并使其动作创建并将新的视图控制器推送到导航堆栈。当您调用popToRootViewControllerAnimated 时,您已将所有其他视图控制器(除了根)从堆栈中弹出,它们可能已被释放并且不再位于导航控制器上的viewControllers 数组中。这就是为什么您只看到根目录,但即使其他人仍然存在,您也必须创建一个名为“Next”的按钮,该按钮调用一个创建新视图控制器并推送它的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多