在我的代码中
....
class MenuTableViewCell: UITableViewCell {
..
..///some code here
..
}
extension MenuTableViewCell : UICollectionViewDataSource, UICollectionViewDelegate{
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return menuItems.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "menuItemCell", for: indexPath) as! MenuItemViewCell
cell.menuItemName = menuItems[indexPath.row]
return cell
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let iconImage = menuItems[indexPath.row]
print("iconImage === ",iconImage,section)
print("Collection view at row \(section) selected index path \(indexPath.row)")
if (section == 0){
if(indexPath.row==0) {
print("inside 0 0")
performSegue(withIdentifier: "home", sender: nil)
}
}
}
}
但它显示错误
使用未解析的标识符'performSegue'
我该怎么做......
答案 0 :(得分:1)
表格视图单元格没有performSegue
的方法。您需要将消息转发到某个视图控制器,或者使视图控制器成为集合视图的数据源。
由于您可能有多个具有集合视图的单元格,我建议您使用第一个解决方案(转发消息以查看控制器)。
所以只需创建一个委托:
protocol MenuTableViewCellDelegate: class {
func menuTableViewCellShouldNavigateHome(_ sender: MenuTableViewCell)
}
在您的单元格中添加一个属性。确保它很弱:
class MenuTableViewCell: UITableViewCell {
..
weak var delegate: MenuTableViewCellDelegate?
并在集合视图委托中调用它:
if(indexPath.row==0) {
print("inside 0 0")
delegate?.menuTableViewCellShouldNavigateHome(self)
}
现在在您的表视图数据源(我希望是一个视图控制器)中找到索引路径中行的方法单元格,您可以在其中创建单元格并将self设置为委托
cell.delegate = self
return cell
并实施协议
extension MyViewController: MenuTableViewCellDelegate {
func menuTableViewCellShouldNavigateHome(_ sender: MenuTableViewCell) {
performSegue(withIdentifier: "home", sender: nil)
}
}