如何在嵌套在TableViewCell中的CollectionViewCell中呈现ViewController,并且TableViewCell位于ViewController中?
我尝试了presentViewController
和performSegue
,但无法在单元格内调用它们。
详细说明:
我有三个文件。
当有人在CollectionViewCell中点击故事时,我希望他们重定向到另一个ViewController,即SinglePostVC()
我尝试过:
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
print("inside this")
self.window?.rootViewController?.present(SinglePostVC(), animated: true, completion: nil)
print("outside this")
}
答案 0 :(得分:1)
像这样使用协议和委托
在tableViewCell
protocol CellDelegate {
func colCategorySelected(_ indexPath : IndexPath)
}
var delegate:CellDelegate?
在didSelect中
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
delegate?.colCategorySelected(indexPath)
}
在你的ProfileViewController
中class HomeVC: UIViewController , UITableViewDelegate, UITableViewDataSource, CellDelegate{
:
:
func colCategorySelected(_ indexPath : IndexPath){
// Push here
}
:
:
}
别忘了
cellForRow
let Cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! tableCell
Cell.delegate = self // dont forget this line.
return Cell
答案 1 :(得分:0)
您可以从PeopleCategoryCollectionViewCell发出通知并在ProfileViewController中侦听它,然后您通常可以呈现视图控制器。
本地通知教程:https://useyourloaf.com/blog/local-notifications-with-ios-10/
示例:
NSNotificationCenter
.defaultCenter()
.postNotificationName(kCellTappedKey, object: nil, userInfo: nil)
然后听:
notificationCenter.addObserver(self,
selector: #selector(self.onCellTapped(_:)),
name: kDocumentCellTappedKey,
object: nil)
并添加此功能:
func onCellTapped(notification: NSNotification) { //call perform segue }