'un içinde UICollectionView üzerinde zorlama Bir Tableview, birden fazla TableViewCells ve her bir TableViewCell'de birden çok UICollectionViewItems içeren bir UICollectionView olan bir viewController sahibim. Her collectionView öğesinin bir etiketi ve görüntü görünümü vardır. Çalışmak için 3d dokunuş almaya çalışıyorum, kullanıcı ve peek ve tabloyu önizleme ve bir görünüm denetleyicisi içine pop-up yapabilmek için koleksiyon görünümü içermeyen tablo cehennemde dokunmadan peek ve pop pop collectionView içindeki resimlerden biri ile aynı şey ama önizleme ve farklı bir görünüm denetleyicisi içine açılır. İlk senaryoyu iyi çalışıyorum, masaya dokunmaya ve "göz atmaya" başladığında tablo cehennemde kalmaya devam ediyor. Koleksiyon görünümünde çalışmaya başlamak için sıkıştım, ne yaptığımın bir önemi yok, ilk tablo satırında hangi resim satırına basmaya devam etmektense, sadece bir resim görünümü çerçevesi keskin kalıyor. Aşağıdaki kodu: Ben koleksiyon görünümü öğesi görüntü görünümünün rect almak gerekir ama tablo hücresinde olduğundan bu nasıl erişebileceğini gibiUITableViewCell
func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
//get the tableviewCell
if let tableCellPath = tableView.indexPathForRow(at: location) {
print("tableCellPath=", tableCellPath)
if let tableCell = tableView.cellForRow(at: tableCellPath) as? VenueMainTableViewCell {
//user tapped on a beer in the collectionview
if let collectionView = tableCell.collectionView {
let collectionPoint = collectionView.convert(location, from: tableView)
if let cvPath = collectionView.indexPathForItem(at: collectionPoint) {
let collectionViewCell = collectionView.cellForItem(at: cvPath) as? VenueMainCollectionViewCell
let cvFrame = collectionViewCell?.itemLabelImageView.frame
let bc = storyboard?.instantiateViewController(withIdentifier: "itemDetail") as! ItemDetailViewController
let ven = UTcheckin.sharedInstance.Venues[collectionView.tag]
let selectedItem = ven.ItemsAtVenue[(collectionViewCell?.tag)!]
bc.item = selectedItem
previewingContext.sourceRect = cvFrame!
return bc
}
}
}
if let tablePath = tableView.indexPathForRow(at: location) {
//user tapping on a venue, this works
previewingContext.sourceRect = tableView.rectForRow(at: tablePath)
let vc = storyboard?.instantiateViewController(withIdentifier: "venueDetail") as! VenueDetailViewController
vc.venue = UTcheckin.sharedInstance.Venues[tablePath.row]
return vc
}
return nil
}
return nil
}
görünüyor? Herhangi bir işaretçi için şimdiden teşekkür ederiz.
olmak ? – Rikh
@Rikh my cvFrame değeri, hangi collectionView hücresine dokunursanız olun ve hangi satırda olduğuna bakmaksızın aynıdır: cvFrame: (0.0, 0.0, 60.0, 60.0). 60x60, viewView hücresindeki imageView boyutudur ve 0,0 değerinde, ekranın sol üst kısmı açık kalır. Boyutu doğru alıyorum, sadece tableviewCell içinde collectionView hücresinin x, y değerini almanız gerekir (eğer bu mantıklıysa). – HH887