从UIView的子视图获取UINavController?

use*_*064 1 cocoa-touch objective-c uiviewcontroller uinavigationcontroller ios

我在UIViewController的内容视图中添加了一个自定义子视图.从该子视图中,我如何获得superview控制器的引用?谢谢

sku*_*kue 5

正确答案是"你做错了";-)

您不需要从视图中引用视图控制器,并且您当然不应该在其中一个视图中保留视图控制器 - 否则您将最终得到保留循环和泄漏内存.

Cocoa提供了多种模式来解决这个问题:

  • 使用委托:定义一个名为DemoViewDelegate的协议,并向DemoView添加委托属性.然后让您的视图控制器实现此协议.重要提示:永远不应保留代表!您创建的任何委托属性都应设置为assign.请参阅Apple的代表团文档或只是谷歌"委托模式".

  • 使用响应程序链:调用UIApplication sendAction:to:from:forEvent:并将to:设置保留nil为让您的操作消息自动将响应程序链路由到视图控制器.请参阅Apple的Responder文档和更详细的Action Messages文档.

  • 使用通知:在此特定方案中不太常见,但您也可以让视图控制器侦听视图发送的通知.