Aar*_*ary 11 macos xcode popover swift safari-app-extension
我正在使用XCode 8.3和Swift 3构建Safari App扩展,遵循Safari App Extension编程指南.扩展程序包括单击扩展程序工具栏项时显示的弹出窗口.弹出窗口视图包含一些链接到用户可以执行的操作的按钮.
我想在执行操作后单击其中一个按钮来关闭弹出窗口.默认情况下,单击弹出窗口外的任何位置会关闭它,但我无法在指南或文档中找到任何其他方法来关闭弹出窗口.
我知道NSPopover有一个performClose
方法,但似乎没有办法从扩展中访问popover本身:app扩展只允许你提供一个SFSafariExtensionViewController,其内容神奇地出现在popover中.
我也试过使用这个StackOverflow答案中dismissViewController
所描述的,但在我的视图中控制器总是为零,并且只是使用消息崩溃扩展:self.presenting
self.dismissViewController(self)
dismissViewController:: Error: maybe this view controller was not presented?
.
最后,我注意到一个相关的问题,关于以编程方式打开工具栏项目popover在过去的6个月里没有得到答复.这让我怀疑苹果可能只是严格限制弹出窗口的打开和关闭方式.即使是这种情况,也很高兴知道这些限制是什么.
小智 0
我通过调用解雇方法来做到这一点,如下所示
@IBAction func onLoginBtnClicked (_ sender: Any) {
NSLog("Button clicked")
self.dismiss(self)
}
Run Code Online (Sandbox Code Playgroud)