【问题标题】:What is the default behaviour of 'Done' in SFSafariViewController?SFSafariViewController 中“完成”的默认行为是什么?
【发布时间】:2017-10-22 09:48:39
【问题描述】:

我正在使用 SFSafariViewController 通过设置视图显示来自网站的应用相关信息(例如关于、支持、T&C)。

在“设置”视图中,有一个带有静态单元格的表格。在 Settings View Controller 中执行以下代码后,会出现一个类似于 Safari 浏览器的视图,并且提供的 URL 已正确加载。

    let url = URL(string: "https://google.com.au")
    let svc = SFSafariViewController(url: url!)
    self.present(svc, animated: true, completion: nil)

但是,我没有为导航栏中的“完成”按钮指定操作。但是当它被点击时它仍然关闭了 Safari 浏览器视图。

问题

基于这里的tutorial,我需要实现SFSafariViewControllerDelegate协议来关闭视图控制器。
我在Apple's Documentation 中搜索了一些信息,但找不到有关“完成”按钮默认行为的任何信息。

  1. “完成”按钮的默认行为是什么?
  2. 即使“完成”按钮正在执行我希望它执行的操作(即关闭视图),我是否仍应实现 SFSafariViewControllerDelegate 协议?

【问题讨论】:

  • 点击完成,用户返回到网页内容加载前显示的视图控制器
  • @Mannopson 是的,这就是我想要的行为,它目前的行为就是这样,没有任何特定的代码。谢谢!

标签: ios swift sfsafariviewcontroller


【解决方案1】:

如果您看到 optional func safariViewControllerDidFinish(_ controller: SFSafariViewController) 委托方法的文档,描述中会说:

您可以在此处执行任何必要的清理工作。视图控制器是 后来被辞退了。

鉴于完成按钮无需在描述中添加委托以及 The view controller is dismissed afterwards. 文本即可工作,我想说假设您不需要实现委托是安全的'对默认的 Done 行为感到满意。

因此委托方法本身是可选的,这表明您不需要来实现该方法。

【讨论】:

  • 感谢您的解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-04
  • 2020-10-27
  • 2017-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多