我在我的iOS Swift应用程序中实现了一些peek UIPreviewActions。但是,这些操作将执行segue事务,而这些事务将被忽略。我如何才能做到这一点?
还有一个类似的问题,但在Objective-C中:UIPreviewAction to Mail From Peek
override func previewActionItems() -> [UIPreviewActionItem] {
let performSegueAction = UIPreviewAction(title: "Go To View", style: .Default) { (action, viewController) -> Void in
self.performSegueWithIdentifier("segueID", sender: self)
}
return [performSegueAction]
}发布于 2017-03-11 21:07:39
很抱歉回复晚了,但我自己最近遇到了这个问题,所以把答案贴出来,以防别人觉得有用……
在调用UIPreviewAction中的处理程序时,视图控制器已经从层次结构中删除,因此执行segues没有任何效果。相反,你应该这样做:
class PreviewViewController: UIViewController {
var performAction: (() -> Void)?
override func previewActionItems() -> [UIPreviewActionItem] {
let performSegueAction = UIPreviewAction(title: "Go To View", style: .Default) { (action, viewController) -> Void in
self.performAction?()
}
return [performSegueAction]
}在父控制器(从其中启动预览)中:
class ParentViewController: UIViewController {
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let vc = segue.destination as? PreviewViewController {
vc.handleAction = {
self.performSegueWithIdentifier("segueID", sender: self)
}
}
inject(toController: segue.destination)
}https://stackoverflow.com/questions/38408597
复制相似问题