[英]Master detail ViewController when detailViewController is dynamic
[英]How to avoid multiple instances of DetailViewController in master/detail iOS app?
在我的从Xcode模板创建的主从应用程序中,似乎在MasterViewController的prepareForSegue中,目标视图控制器从来不是我的DetailViewController的同一实例-每次都会得到一个新实例:
DetailViewController *detailController = (DetailViewController *)[[segue destinationViewController] topViewController];
另外,segue.destinationViewController.topViewController与masterViewController启动时获得的detailViewController不同。 在MasterViewController viewDidLoad中:
self.detailViewController = (DetailViewController *)[[self.splitViewController.viewControllers lastObject] topViewController];
这对我来说是个问题,因为我的detailViewController为AVPlayer对象中的事件安装了观察者,并且这些观察者必须配对:addObserver / removeObserver。 如果一个实例没有删除观察者,那么我会收到一个以上的接收通知的实例。
有什么方法可以确保我始终使用DetailViewController的单个/相同实例?
lionserdar的评论提供了导致解决方案的提示。 我在MasterViewController中持有对detailViewController的强烈引用,这通过允许对象持久存在而产生了问题,从而使额外的观察者可以查看AVPlayer中的事件。 我进行了两项更改以解决问题:
谢谢您的帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.