Swift如何正确覆盖3D-Touch功能?

问题描述 投票:0回答:1

我正在尝试在我自己的小应用程序中实现3D触控。该应用程序类似于学校规划器,因此主视图Controller是一个UITableViewController,在表视图中有一些课程,当点击其中一个时,会出现一个segue,并将活动视图控制器更改为'DetailedViewController '.swift。到目前为止一切都有效。但是现在我正在尝试实现3D-Touch,以便用户可以更加努力地按下“课程”来预览特定课程。我的第一个尝试是在故事板的segue中设置复选标记。它实际上显示了预览,但我想在预览下添加一些动作,并给它一个标题。所以我尝试实现UIViewControllerPreviewingDelegate协议并创建我的自定义函数。

但从那时起,我不知道如何继续。

我的职责:

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.leftBarButtonItem = self.editButtonItem()
    // .... Some other irrelevant stuff
    registerForPreviewingWithDelegate(self, sourceView: view)
}

 func previewingContext(previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
    if let indexPath = tableView.indexPathForRowAtPoint(location) {
        //This will show the cell clearly and blur the rest of the screen for our peek.
        previewingContext.sourceRect = tableView.rectForRowAtIndexPath(indexPath)
    }
    return nil
}

func previewingContext(previewingContext: UIViewControllerPreviewing, commitViewController viewControllerToCommit: UIViewController) {
    presentViewController(viewControllerToCommit, animated: true, completion: nil)
}

override func previewActionItems() -> [UIPreviewActionItem] {
    print("previewActionItems")
    let action = UIPreviewAction(title: "Press Me!", style: .Default) { (action, viewController) in
        print("I believe I can fly")
    }
    return [UIPreviewAction](arrayLiteral: action)
}

我的课程:

初始视图控制器是MainTableViewController。上面显示的所有函数都写在这个类中。

更详细的视图控制器是详细的ViewController。

谢谢你的回答!

ios swift 3dtouch
1个回答
0
投票
override var previewActionItems: [UIPreviewActionItem] {

    let action1 = UIPreviewActionGroup(title: NSLocalizedString("action1", comment: "action1"), style: .default, actions: someAction)

    let action2 = UIPreviewAction(title: "action2", style: .default) {[unowned self] (action, viewController) in
        print("action2")
    }

    return [action1, action2]
}
© www.soinside.com 2019 - 2024. All rights reserved.