我正在尝试在TableViewController中实现窥视和弹出功能,以便当我3DTouch任何单元格时,它会向我显示它们点击时将带我转到的SFSafariViewController的预览。peek功能工作得很好,但是一旦它转到pop状态,它就不会在desired state中提供SFSafariViewController,而是显示前一个视图中的导航控制器,以及一个显示SFViewController (Image Here)的小尺寸视图。
这是我如何在我的TableViewController中编写窥视和弹出功能的:
extension MyBlogsTableViewController: UIViewControllerPreviewingDelegate {
func previewingContext(previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
if let indexPath = tableView.indexPathForRowAtPoint(location) {
let cell = tableView.cellForRowAtIndexPath(indexPath) as! MyBlogsTableViewCell
let destinationViewController = SFViewControllerToExplore(indexPath.row)
destinationViewController.preferredContentSize = CGSize(width: 0.0, height: 0.0)
previewingContext.sourceRect = cell.frame
return destinationViewController
}
return nil
}
func previewingContext(previewingContext: UIViewControllerPreviewing, commitViewController viewControllerToCommit: UIViewController) {
navigationController?.pushViewController(viewControllerToCommit, animated: true)
}
private func touchedView(view: UIView, location: CGPoint) -> Bool {
let locationInView = view.convertPoint(location, fromView: tableView)
return CGRectContainsPoint(view.bounds, locationInView)
}
private func SFViewControllerToExplore(index: Int) -> UIViewController {
var destinationController: SFSafariViewController
destinationController = SFSafariViewController(URL: NSURL(string: identifierOfLinks[index])!, entersReaderIfAvailable: true)
return destinationController
}
}发布于 2016-04-20 15:15:59
我想通了。所以在下面的代码中:
func previewingContext(previewingContext: UIViewControllerPreviewing, commitViewController viewControllerToCommit: UIViewController) {
navigationController?.pushViewController(viewControllerToCommit, animated: true)
} 我实际上不应该使用pushViewController,而应该使用presentViewController
已更正的代码:
func previewingContext(previewingContext: UIViewControllerPreviewing, commitViewController viewControllerToCommit: UIViewController) {
navigationController?.presentViewController(viewControllerToCommit, animated: true, completion: nil)
} https://stackoverflow.com/questions/36736108
复制相似问题