如今,似乎有50%的iPhone应用都在使用类似Facebook的滑动菜单。我还使用ViewDeck库(https://github.com/Inferis/ViewDeck)通过这个UI创建了一些应用程序。左视图是一个UITableView,点击一个项目会改变中心视图。
不过,我一直在为良好的“菜单管理”而苦苦挣扎。您是否创建了包含所有视图控制器的NSArray?一次延迟加载一个是不是更好?你是如何处理内存的?不确定最好的方法是什么,同时保持尽可能低的内存使用量。
当我看着这些滑动菜单库时,从来没有一个完整的示例应用程序具有工作菜单和多个控制器。就像我说的,我已经用ViewDeck创建了几个应用程序,但是视图控制器的实际更改总是让人感觉笨拙,而且根本不是最优的(包含所有实例化的视图控制器的数组)。
发布于 2013-01-08 22:26:15
我将数组用于视图控制器,而不是视图。当用户选择指向视图控制器的单元格时,视图被加载。所以它是惰性加载。如果你认为你需要注意内存,那么在内存警告时,你可以释放你现在不需要的视图控制器。
当然,这取决于你在控制器中有什么,但通常(标准UI)你不需要释放它们。我从来没有需要过。
发布于 2013-01-08 22:54:28
首先,请注意,我从未使用过Facebook应用程序或ViewDeck,根据演示视频,这个库是用来做什么的很清楚。
我可以建议你寻找不同的模式,例如,有一本书叫Pro Objective-C Design Patterns for iOS,它描述了一个非常简单的中介模式,基本上就是控制器的控制器。
内存管理完全依赖于任务,我看不出有任何理由一次初始化所有的视图控制器,因为它们的视图可能会在不显示的时候加载。此外,视图并不总是控制器中最耗费资源的部分。这样的方法需要非常严格和仔细的控制器开发,你还必须使它们可重用,这并不容易。
相反,我会尽量使它尽可能灵活和简单:一个使用的视图控制器数组,下一个是按需加载和添加的。它应该与UINavigationController控制器堆栈非常相似。UINavigationController本身就是一个很好的研究样本,你不会有源代码,但你会有所有的头文件,内部逻辑也不是很难。
发布于 2013-06-07 03:24:27
我所做的是创建了一个容器视图控制器,在视图底部有侧栏菜单,这意味着它是不可见的。最重要的是,我有一个contentView (它只是一个UIView),我有一个UINavigationController,它管理UIViewControllers,并将导航栏设置为隐藏。然后,我将对这个UINavigationController的引用传递给侧栏菜单,它只是一个带有UITableView的UIView的子类,UIViewControllers就是在这里加载的。当用户选择一行时,I分配/初始化视图控制器。因此,当新的UIViewController被推送到堆栈上时,它会被推送到内容视图中的UINavigationController上。
https://stackoverflow.com/questions/14216994
复制相似问题