Я использую Swift3 и Xcode 8.3.3
Я работаю над UITableViewCell, который содержит UICollectionView.
Каждая ячейка CollectionView должна выполнять переход.
Я имею в виду, мне нужно вызвать другой ViewController с помощью контроллера навигации. Таким образом, пользователь может вернуться к основному UITableViewController.
import UIKit
class PastCell: UITableViewCell {
@IBOutlet weak var ptripDtls: UICollectionView!
var logcount:Int = 0
override func awakeFromNib() {
super.awakeFromNib()
ptripDtls.delegate = self
ptripDtls.dataSource = self
logcount = Transfer.tripObj[Transfer.cellpos]["logcount"]! as! Int
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
let width = self.ptripDtls.collectionViewLayout.collectionViewContentSize.width;
layout.sectionInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
layout.itemSize = CGSize(width: width-17 , height: 50)
layout.minimumInteritemSpacing = 0
layout.minimumLineSpacing = 1
ptripDtls!.collectionViewLayout = layout
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
}
extension PastCell: UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return logcount
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "PastTripCollectionCell", for: indexPath) as! PastTripCollectionCell
return cell
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
//Might be here segue function will call
}
}
каков твой вопрос?
let vc = self.storyboard! .instantiateViewController (withIdentifier: Constant.vc.DestinationVC) как! DestinationVC self.show (vc, sender: self) напишите эти две строки кода в своем didselect
@GoribDeveloper Это настраиваемая ячейка, в которой хранится коллекция. Поэтому я не могу использовать вашу функцию.
@V_rohit да, используя навигацию, чтобы я мог вернуться





На самом деле у вас есть несколько вариантов:
Передайте закрытие внутри UITableViewCell, например tapped: (Model) -> Void, когда вы выводите из очереди ячейку tableView, и укажите внутри этого закрытия для выполнения перехода. (он работает, если все ячейки вашей коллекции будут выполнять один и тот же переход, вы можете использовать этот механизм для распространения вашего обратного вызова, если должны быть вызваны разные сегменты)
Определите настраиваемый делегат, чтобы сообщить вашему viewController о методе DidSelectItem CollectoinView, а затем выполните переход соответствующим образом.
Запустите уведомление во всей системе, которое только ваш ViewController прослушивает, и выполните свой переход соответствующим образом. (На самом деле это не очень хорошее решение, просто указываю на то, что это возможно)
Я согласен с вашими предложениями, позвольте мне попробовать.
Для быстрого 4 Используйте выполнение перехода внутри didSelectRowAtIndexPath, если вы используете переход
self.performSegue(withIdentifier: "YourSegueIdentifier", sender: nil)
и используйте Push, если вы используете только контроллер навигации.
let vc = self.storyboard?.instantiateViewController(withIdentifier: "YourVCIdentifier") as! YourVC
self.navigationController?.pushViewController(vc, animated: true)
Я уже писал, что работаю над swift3, также класс Table Custom Cell содержит сборку и ячейку коллекции, необходимую для выполнения перехода.
поэтому вы хотите вызвать другой контроллер представления, когда выбрана ячейка представления коллекции