当我在MainInterface.storyboard上设置的初始视图控制器上呈现另一个视图控制器时,会出现令人困惑的情况.这个呈现的视图控制器嵌入在导航控制器中(它是它的根视图控制器).
我对presentVIEwController进行了检查
(lldb) po [self presentingVIEwController]<_UIVIEwServiceVIEwControllerOperator: 0x7a978000>(lldb) po [[self presentingVIEwController] extensionContext]nil
因此,此时扩展上下文为零.我可以通过将它从presentsVIEwController传递给presentVIEwController来访问extensionContext.
但是,我发现这种行为有点奇怪.应用程序扩展是否仅设计为从一级视图控制器层次结构访问?
解决方法 如果您要在扩展故事板中使用多个视图控制器,则必须将对原始视图控制器的extensionContext的引用传递给最终负责完成扩展请求的视图控制器.在初始视图控制器中:overrIDe func prepareForSegue(segue: UIStoryboardSegue,sender: AnyObject?) { let destination = segue.destinationVIEwController as! FinalVIEwController destination.originalExtensionContext = self.extensionContext}
在你的最终视图控制器中:
@IBAction func dismissController(sender: UIbutton!) { dismissVIEwControllerAnimated(true) { () -> VoID in self.originalExtensionContext.completeRequestReturningItems(self.originalExtensionContext.inputItems,completionHandler: nil)}
请注意,您必须为原始扩展上下文创建唯一命名的属性,因为extensionContext已作为超类UIVIEwController上的属性名存在.您不能将现有的extensionContext传递给UIVIEwController的属性extensionContext,因为它是一个只读属性.
总结以上是内存溢出为你收集整理的ios – 从呈现的视图控制器访问extensionContext全部内容,希望文章能够帮你解决ios – 从呈现的视图控制器访问extensionContext所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)