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

ios - 与使用 addSubView 添加 View 相比,使用 UINavigationController 有什么好处?

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

假设我有两个页面,其中包含两个 UIViewControllersUIViewController1UIViewController2.

如果我想在 UIViewController1 上显示 UIViewController2 我有三个选项:

  1. 使用 UINavigationController pushViewController.
  2. 使用 presentViewController
  3. addSubView : UIViewController1.view.addSubView(UIViewController2.view)

如果我需要在我的 View 之间进行转换,我更喜欢第三个选项,因为它让我可以更好地控制 View 。

这三个选项在性能方面有什么区别吗?



Best Answer-推荐答案


在 iOS 6 之前,您不应该执行选项 3。 View Controller 旨在控制整个屏幕。在 iOS 6 中,Apple 添加了对父 View Controller 和 subview Controller 的支持。您可以让另一个 View Controller 成为您的 child 并将其内容 View 添加到您的 child 。

如果您要使用选项 3,那么这就是您需要做的。如果你不这样做,你会遇到各种各样的问题。

甚至支持 Storyboard中内置的父/ subview Controller 。您可以将容器 View 添加到 View Controller ,然后控制从容器 View 拖动到另一个 View Controller 的场景。当您这样做时,系统会创建一个“嵌入 segue”,在容器 View 中设置 subview Controller 并为您连接父/子关系。

当您希望新的 View Controller 替换或至少覆盖第一个 View Controller 时,您的前 2 个选项是。选项 3 用于当您希望屏幕的某个区域由另一个 View Controller 管理时。

选项 3(使用 subview Controller )确实意味着两个 View Controller 将同时处于事件状态并在内存中,因此您不能像在推送中那样释放覆盖的 View Controller 的数据存储,而它处于非事件状态或模态演示。但是,除非您的 View Controller 拥有并呈现巨大的数据结构,否则这并不是什么大问题。在推送和模态演示中,被覆盖的 View Controller 无论如何都会停留在内存中,等待被发现。您必须采取特殊步骤才能在 View Controller 的 View 被覆盖时释放任何内存,然后在它再次显示时重新分配它 - 这是不寻常的。

关于ios - 与使用 addSubView 添加 View 相比,使用 UINavigationController 有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34693489/

回复

使用道具 举报

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

本版积分规则

关注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