我想对我的应用程序的两个集合视图进行 3D 触摸(仅“Peek”功能)。它们都包含在同一个视图控制器中。无论我尝试什么语法,它总是在第一个集合视图中显示单元格的图像和文本,即使我在第二个集合视图中选择了一个单元格。如何将这些分开,以便只有一个专门针对我选择的 collectionview 单元格发生?
以下是我实现 3D 触摸功能的方式:
我把它放在 VC 的 viewDidAppear 中,因为由于某种原因它在 viewDidLoad 中不起作用:
override func viewDidAppear(animated: Bool) {
if( traitCollection.forceTouchCapability == .Available){
registerForPreviewingWithDelegate(self, sourceView: collectionView1)
registerForPreviewingWithDelegate(self, sourceView: collectionView2)
}
这是我在包含两个集合视图的 VC 中也有的内容:
func previewingContext(previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
guard let previewVC = storyboard?.instantiateViewControllerWithIdentifier("PreviewVC") as? PreviewViewController
else{ return nil }
guard let indexPath = collectionView1?.indexPathForItemAtPoint(location) else { return nil }
guard let indexPath2 = collectionView2.indexPathForItemAtPoint(location) else { return nil }
guard let cell1 = collectionView1?.cellForItemAtIndexPath(indexPath) else { return nil }
guard let cell2 = collectionView2.cellForItemAtIndexPath(indexPath) else { return nil}
previewVC.selectedItem = String(Gifs.row1[indexPath.row])
previewVC.selectedItem2 = String(Gifs.row2[indexPath.rown])
previewVC.preferredContentSize = CGSize(width: 245, height: 200)
previewingContext.sourceRect = cell1.frame
return previewVC
}
这是我在 previewVC 中的内容:
class PreviewViewController: UIViewController {
@IBOutlet weak var selectedGifImageView: UIImageView!
@IBOutlet weak var textLabel: UILabel!
var selectedItem: String?
var selectedItem2: String?
var delegate: MoveScrollViewController?
override func viewWillAppear(animated: Bool) {
textLabel.text = Gifs.gifDictionary[selectedItem]
selectedGifImageView.setGifImage(UIImage(name: selectedItem))
textLabel.text = Gifs.gifDictionary[selectedItem2]
selectedGifImageView.setGifImage(UIImage(name: selectedItem2))
}