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

objective-c - 模态视图 Controller 是替代 iPad 上整个界面的首选方式吗?

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

具体来说,我有一个类似游戏的东西,它的菜单屏幕由标准组件组成。我想要一个按钮切换到另一个 View Controller ,用户将与之交互一段时间,然后返回菜单屏幕。似乎让菜单 Controller 将“游戏”模式呈现为模态视图 Controller 是最直接的解决方案,但这是从本质上替换整个 View 的最佳方式吗?只要模态 Controller 在前面,整个菜单(以后可能会成为深度导航或拆分 Controller )是否保存在内存中,这是我应该担心的事情吗?



Best Answer-推荐答案


这个问题实际上有两个部分:

在 iPad 应用程序中从一个 View 转换到下一个 View 的哪种方法可以为用户提供最佳体验?

从一个 View 转换到下一个 View 的哪种方法最容易实现并且最好地处理内存管理?

除了向您指出 Apple 的“iPad 人机界面指南”(除其他事项外)外,我不会尝试解决此问题的第一部分:

Reduce Full-Screen Transitions

Closely associate visual transitions with the content that’s changing. Instead of swapping in a whole new screen when some embedded information changes, try to update only the areas of the user interface that need it. As a general rule, prefer transitioning individual views and objects, not the screen. In most cases, flipping the entire screen is not recommended.

When you perform fewer full-screen transitions, your application has greater visual stability, which helps people keep track of where they are in their task. You can use UI elements such as split view and popover to lessen the need for full-screen transitions.

http://developer.apple.com/library/ios/prerelease/#documentation/General/Conceptual/iPadHIG/DesignGuidelines/DesignGuidelines.html

但是,在您的情况下,我认为全屏转换是完全合适的(但我不是用户体验专家)。

在回答第二部分时,是的,以模态方式显示新的 View Controller 似乎是一个不错的方法。

默认情况下,菜单 View 使用的对象和模态视图使用的对象都将保存在内存中——但是使用 UIViewController 子类的好处是它们内置了一些默认的内存管理。如果您的应用程序在全屏模式下显示模态视图时收到内存警告,则菜单 View Controller 的 View 将被删除,并且将调用它的“viewDidUnload”方法。所以在你实现这个方法时,你应该释放你不需要的任何对象,然后在菜单 View Controller 的 viewDidLoad 方法中根据需要重新创建它们(在显示菜单 View 之前将再次调用该方法)。

这在 UIViewController 类引用中有更详细的解释:

When a low-memory warning occurs, the UIViewController class purges its views if it knows it can reload or recreate them again later. If this happens, it also calls the viewDidUnload method to give your code a chance to relinquish ownership of any objects that are associated with your view hierarchy, including objects loaded with the nib file, objects created in your viewDidLoad method, and objects created lazily at runtime and added to the view hierarchy. Typically, if your view controller contains outlets (properties or raw variables that contain the IBOutlet keyword), you should use the viewDidUnload method to relinquish ownership of those outlets or any other view-related data that you no longer need.

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html

关于objective-c - 模态视图 Controller 是替代 iPad 上整个界面的首选方式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3623405/

回复

使用道具 举报

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

本版积分规则

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