首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >3DTouch上的SFSafariViewController问题(弹出状态)

3DTouch上的SFSafariViewController问题(弹出状态)
EN

Stack Overflow用户
提问于 2016-04-20 14:59:45
回答 1查看 218关注 0票数 1

我正在尝试在TableViewController中实现窥视和弹出功能,以便当我3DTouch任何单元格时,它会向我显示它们点击时将带我转到的SFSafariViewController的预览。peek功能工作得很好,但是一旦它转到pop状态,它就不会在desired state中提供SFSafariViewController,而是显示前一个视图中的导航控制器,以及一个显示SFViewController (Image Here)的小尺寸视图。

这是我如何在我的TableViewController中编写窥视和弹出功能的:

代码语言:javascript
复制
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
}

}
EN

回答 1

Stack Overflow用户

发布于 2016-04-20 15:15:59

我想通了。所以在下面的代码中:

代码语言:javascript
复制
func previewingContext(previewingContext: UIViewControllerPreviewing, commitViewController viewControllerToCommit: UIViewController) {
     navigationController?.pushViewController(viewControllerToCommit, animated: true)
}  

我实际上不应该使用pushViewController,而应该使用presentViewController

已更正的代码:

代码语言:javascript
复制
func previewingContext(previewingContext: UIViewControllerPreviewing, commitViewController viewControllerToCommit: UIViewController) {
     navigationController?.presentViewController(viewControllerToCommit, animated: true, completion: nil)
}  
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36736108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档