ios – 为什么使用setViewControllers从UINavigationController的导航栏中删除所有内容?

ios – 为什么使用setViewControllers从UINavigationController的导航栏中删除所有内容?,第1张

概述这是问题所在.我在UINavigationController中使用以下代码来交换rootViewController.我需要能够在许多不同的屏幕之间交换rootViewController,并允许用户从每个屏幕向下钻取(这显然是我需要导航控制器的原因): SomeViewController *tmp = [[SomeViewController alloc] initWithNibName:@ 这是问题所在.我在UINavigationController中使用以下代码来交换rootVIEwController.我需要能够在许多不同的屏幕之间交换rootVIEwController,并允许用户从每个屏幕向下钻取(这显然是我需要导航控制器的原因):

SomeVIEwController *tmp = [[SomeVIEwController alloc] initWithNibname:@"SomeVIEwController" bundle:nil];NSArray * vIEwControllers = [self vIEwControllers];NSArray * newVIEwControllers = [NSArray arrayWithObjects:tmp,nil];[self setVIEwControllers:newVIEwControllers];

现在在阅读UINavigationController的类引用时,我看到对于“vIEwControllers”属性,它说:“根视图控制器在数组中的索引0处,后视图控制器在索引n-2处,以及顶部控制器在索引n-1处,其中n是数组中的项目数.“

当我在那里打印我的vIEwControllers数组的计数时,我得到1,当前的rootVIEwController.如果顶级控制器(我假设是导航栏)没有东西吗?

只要我将setVIEwControllers与新视图一起使用,导航栏中的所有内容都会消失.我将添加我有一个左右按钮以及一个自定义标题按钮,它们都已初始化并添加到init方法的导航栏中,并且一直工作正常,直到它们消失在我身上.

任何帮助将不胜感激.

解决方法 因为UINavigationController管理视图控制器的堆栈(数组),如果你要为它提供一个堆栈,它将解除分配并删除它的旧堆栈.如果需要添加多个视图控制器,可以使用-pushVIEwController:animated:completion:除最后一个视图控制器外,所有 *** 作都设置为NO.

因为你给它的堆栈只包含一个视图控制器,-count会打印1,实际上它将是顶视图控制器.

总结

以上是内存溢出为你收集整理的ios – 为什么使用setViewControllers从UINavigationController的导航栏中删除所有内容?全部内容,希望文章能够帮你解决ios – 为什么使用setViewControllers从UINavigationController的导航栏中删除所有内容?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1013195.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存