Я хотел бы иметь трехмерное касание обоих представлений коллекции моего приложения (только функциональность «Peek»). Они оба содержатся в одном контроллере. Независимо от того, какой синтаксис я стараюсь, он всегда отображает изображение и текст для ячейки в первом представлении коллекции, даже если я выбираю ячейку во втором представлении коллекции. Как отделить их так, чтобы только один был выбран специально для ячейки коллекции, которую я выбрал?Внедрение 3D-прикосновений к нескольким представлениям коллекции или представлениям таблиц в одном и том же контроллере представления
Вот как я реализую 3D-функциональность сенсорного:
я положил это в viewDidAppear VC, потому что он не работает в viewDidLoad по какой-то причине:
override func viewDidAppear(animated: Bool) {
if(traitCollection.forceTouchCapability == .Available){
registerForPreviewingWithDelegate(self, sourceView: collectionView1)
registerForPreviewingWithDelegate(self, sourceView: collectionView2)
}
Вот что у меня есть в ВК, что дома два collectionviews:
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))
}
Проверьте, находится ли первое место в 'colletionView1' или' collectionView2'. Например, если CGRectContainsPoint (collectionView1.frame, location) {// обрабатывает collectionView1} else, если CGRectContainsPoint (collectionView2.frame, location) {// handle 2} ' – beyowulf