• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

iphone - UINavigationController 嵌套在 moreViewController 中的问题

[复制链接]
菜鸟教程小白 发表于 2022-12-13 15:39:01 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有包含一些 UINavigationControllers 的 UITabbarMoreController。这些 UINavigationControllers 然后包含我的自定义 View Controller 。

所以层次结构看起来像这样:

UITabbarController
 - UINavigationController
  -> my custom UIViewController
 - ...(other children of UITabbarController look the same)

在我的自定义 View Controller 中,我调用 [self parentViewController] 应该返回一个 UINavigationController。这确实发生了,我确实得到了一个 UINavigationController,但只有当特定的 UINavigationController 不在 moreNavigationController 中时。

由于我在 tabbar Controller 中有很多子 Controller ,所以 tabbar Controller 创建了一个 moreNavigationController。如果我打开 moreNavigationController 下的 View Controller 并调用 [self parentViewController] 它会返回一个带有 UIMoreNavigationController 类的神秘对象

我确实需要获取作为我的 View Controller 的父级的 UINavigationController,而不是 UIMoreNavigationController。另外,我尝试使用 [self navigationController] 得到相同的结果。如何获得对我的 View Controller 真正最近的父级的引用?提前感谢您的帮助!



Best Answer-推荐答案


简而言之,你不能。

Apple 总是尝试优化他们的代码。他们的优化之一是检查其 UIMoreNavigationController 列表中显示的 ViewController 是否属于 UINavigationController 类型。因为UIMoreNavigationController 本身就是一个UINavigationController,它不想创建另一个UINavigationController。它试图避免 UINavigationController 嵌套。

当你查看 UIMoreNavigationController 的头文件时你会注意到它有一个变量 UINavigationController* _originalNavigationController; 是您创建并想要访问的原始 UINavigationController。不幸的是你不能因为 UIMoreNavigationController 是私有(private)的。

解决方法(丑陋)

当您将 NavigationController 的引用推送到它的堆栈时,将它们传递给它的子级。

关于iphone - UINavigationController 嵌套在 moreViewController 中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11965886/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap