ios - 通过导航 Controller 调用自定义加载方法

标签 ios objective-c memory-management uiviewcontroller uinavigationcontroller

这个问题是由两部分组成的,我已经看过但找不到类似的问题,但也许我只是不知 Prop 体要搜索什么。

我有一个容器 View ,它位于我的大多数 UIViewController 的顶部,就像用户的导航(还有其他选项,如保存)。因此每个 View 都可以从其他所有 View 访问。我遇到的问题是,这可能会在 UINavigationController 中创建循环,这是不建议的。我目前的尝试是删除除根 UIViewController 之外的所有内容,然后加载新的 View Controller 。这不好,虽然它加载正常,但我的 Assets 占用大量内存,因此从头开始加载它们或一次加载多个实例会占用太多内存。我将尽快减少 Assets 大小以减少内存压力,但我仍然认为我这样做的方式非常糟糕且效率低下,因此我想知道一种更有效的管理 UIViewController 的方法。

这个问题的另一部分是关于加载这些 UIViewController 的。我有多种方法来输入某些 UIViewController ,它们需要稍微不同的配置。我知道我可以使用特定的 init 方法手动加载 UIViewController,或者我可以使用 NSNotification 告诉类做一些额外的初始化工作,但我想知道是否有更好的方法来做到这一点,如果没有,哪个选项会更好?

抱歉,文字墙很长,如有任何建议,我们将不胜感激。

最佳答案

对于第一个问题,听起来您不应该使用 UINavigationController 作为容器 View Controller 的基础。相反,您应该使用自己的自定义容器 View Controller 。

如果您想查看自定义容器 View Controller 的示例,或者只是想使用一个类来更轻松地创建一个容器 View Controller ,您可以在 GitHub 上查看我的类 CLFContainerViewController:https://github.com/cflesner/CLFContainerViewController

它尚未更新以使用 iOS 7 提供的所有新动画选项,因此动画转换有点笨拙(尽管它为您提供了很大的灵 active )。不过它与 iOS 7 完全兼容。

对于第二个问题,如何创建它们完全是个人喜好。您可以创建自定义 init 方法,或者您可以只使用您设置的属性来配置 View Controller 。如果您使用的是自定义容器 View Controller ,则需要使用一些 init 来初始化它们,或者如果您使用的是 Storyboard,则可以调用 instantiateViewControllerWithIdentifer: 来获取一个实例。

关于ios - 通过导航 Controller 调用自定义加载方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21392309/

相关文章:

ios - 在 objective-c 中单击表格单元格外部的按钮时展开表格单元格

ios - 在 iOS 中缓存异步响应

c++ - 我如何在此功能中释放内存?

c - R 将函数 Realoc 与 .C 接口(interface)一起使用

ios - 自定义 View - self.frame 不正确?

ios - 可以将 NSmanagedObject 移动到另一个 NSManagedContext 吗?

iphone - 为什么在iOS中可以使用object但是NSLog(@"%@",object)会导致bad memory access?

iOS 在 `Files` 应用程序中点击文件时打开应用程序

ios - 如何以编程方式显示 UISegmentedControl?

c# - 显式事件添加/删除,误解了吗?