ios – 从呈现的视图控制器访问extensionContext

ios – 从呈现的视图控制器访问extensionContext,第1张

概述我已经尝试为共享扩展创建自定义视图控制器. 当我在MainInterface.storyboard上设置的初始视图控制器呈现另一个视图控制器时,会出现令人困惑的情况.这个呈现的视图控制器嵌入在导航控制器中(它是它的根视图控制器). 我对presentViewController进行了检查 (lldb) po [self presentingViewController]<_UIViewSer 我已经尝试为共享扩展创建自定义视图控制器.

当我在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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1107708.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存