查看 ViewController 但弹出不同的 ViewController - 3D Touch - Swift
Peek ViewController but Pop a Different ViewController - 3D Touch - Swift
我想查看一个只有一个 ImageView 和一些标签的视图控制器,但是当用户用力按压时,它们会弹出到 ViewController 中,如果用户只是单击 table 视图单元格!
我遇到的问题是 viewControllerToCommit 没有索引路径让我计算出要传递给新视图控制器的内容。这是我到目前为止的代码:
func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) {
let popViewController = self.storyboard?.instantiateViewController(withIdentifier: "ReadArticleViewController") as! ReadArticleViewController
popViewController.storyURL = //This is where i need to be able to get the index path so i can extract the url for the webview
self.show(popViewController, sender: self)
}
func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
guard let indexPath = tableView.indexPathForRow(at: location) else {return nil}
let cell = tableView.cellForRow(at: indexPath) as! ArticleCell
let previewViewController = self.storyboard?.instantiateViewController(withIdentifier: "PeekViewController") as! PeekViewController
previewViewController.storyImage = cell.pictureView.image
previewViewController.storyTitle = cell.titleLabel.text
previewViewController.preferredContentSize = CGSize(width: view.frame.width, height: 300)
previewingContext.sourceRect = cell.frame
return previewViewController
}
在 viewControllerForLocation
中,您有索引路径和单元格。您需要根据需要将该信息保存到实例 属性,以便在调用 commit
时拥有它。如果此实例 属性 是 PeekViewController 的一部分,这将特别有帮助,因为这是在 commit
中(在名称 viewControllerToCommit
下)交给你的东西!它已经有一个 storyImage
属性 和一个 storyTitle
属性;好吧,给它更多的属性,无论你在 commit
到达时需要什么。换句话说,将 PeekViewController 用作信使(或者,以另一种方式看待它,作为信封)。您从 viewControllerForLocation
返回的实例是您将在 commit
中作为 viewControllerToCommit
.
收到的实例
我想查看一个只有一个 ImageView 和一些标签的视图控制器,但是当用户用力按压时,它们会弹出到 ViewController 中,如果用户只是单击 table 视图单元格!
我遇到的问题是 viewControllerToCommit 没有索引路径让我计算出要传递给新视图控制器的内容。这是我到目前为止的代码:
func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) {
let popViewController = self.storyboard?.instantiateViewController(withIdentifier: "ReadArticleViewController") as! ReadArticleViewController
popViewController.storyURL = //This is where i need to be able to get the index path so i can extract the url for the webview
self.show(popViewController, sender: self)
}
func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
guard let indexPath = tableView.indexPathForRow(at: location) else {return nil}
let cell = tableView.cellForRow(at: indexPath) as! ArticleCell
let previewViewController = self.storyboard?.instantiateViewController(withIdentifier: "PeekViewController") as! PeekViewController
previewViewController.storyImage = cell.pictureView.image
previewViewController.storyTitle = cell.titleLabel.text
previewViewController.preferredContentSize = CGSize(width: view.frame.width, height: 300)
previewingContext.sourceRect = cell.frame
return previewViewController
}
在 viewControllerForLocation
中,您有索引路径和单元格。您需要根据需要将该信息保存到实例 属性,以便在调用 commit
时拥有它。如果此实例 属性 是 PeekViewController 的一部分,这将特别有帮助,因为这是在 commit
中(在名称 viewControllerToCommit
下)交给你的东西!它已经有一个 storyImage
属性 和一个 storyTitle
属性;好吧,给它更多的属性,无论你在 commit
到达时需要什么。换句话说,将 PeekViewController 用作信使(或者,以另一种方式看待它,作为信封)。您从 viewControllerForLocation
返回的实例是您将在 commit
中作为 viewControllerToCommit
.