-1

私はtableViewセル内にcollectionViewを持っています。私は、collectionViewセルをタップし、渡された情報でdetailTableViewに行きたいと思います。私は多くの作業をしていません。いくつかの研究を行い、tableViewセルにストーリーボードもnavigationControllerもないことを示しています。どのようにすれば、データをdetailTableViewに渡すことができますか。ここではあなたはそれがタップだとあなたは、その後、あなたがやりたいことができたときに、テーブルビューを通知しますあなたのコレクションビューセルのデリゲートを作成することができ、おそらく正しいValueType "tableViewCell"にはメンバーがありませんnavigationController

class PopularTableViewCell: UITableViewCell { 
    var books = [CKRecord]() 
    var detailViewController: DetailViewController! 
} 


extension PopularTableViewCell: UICollectionViewDataSource { 
    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
     let record = books[indexPath.row] 
     let storyBoard = UIStoryboard(name: "Home", bundle: nil) 
     if let detailVC = storyBoard.instantiateViewController(withIdentifier: "DetailVC") as? DetailViewController { 
      detailVC.bookRecord = record 
      detailViewController.navigationController?.pushViewController(detailVC, animated: true) 
     } 
    } 
} 

答えて

0

ではありません、私の実装です。

詳細ビューを管理するためにコレクションビューと2番目のセクションを追加する方が簡単ですか?

1

あなたがテーブルビューが含まれているルートビューコントローラからビューコントローラをプッシュする必要があります。コレクションビューから

self.navigationController.pushViewController(detailVC, animated: true) 

データは、例えば、カスタムデリゲートを渡すことができます。テーブルビューのセルにおけるその後

protocol CustomDelegate: class { 
    func didSelectItem(record: CKRecord) 
} 

weak var delegate: CustomDelegate? 

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
    let record = books[indexPath.row] 
    delegate?.didSelectItem(record: record) 
} 

別デリゲート:

extension TableViewCell: CustomDelegate { 
    func didSelectItem(record: CKRecord) { 
     delegate?.didSelectItem(record: record) 
    } 
} 

最後に、ビューコントローラ:PS

extension ViewController: CustomDelegate { 
    func didSelectItem(record: CKRecord) { 
     let storyBoard = UIStoryboard(name: "Home", bundle: nil) 
     if let detailVC = storyBoard.instantiateViewController(withIdentifier: "DetailVC") as? DetailViewController { 
      detailVC.bookRecord = record 
      self.navigationController?.pushViewController(detailVC, animated: true) 
     } 
    } 
} 

は:これを試して、私はつもりだ

cell.delegate = self 
+0

しかし 'didSelectItemAt indexPath'方法は、私のtableViewCell内にある:のようなデリゲートを接続することを忘れないでください。すべてが 'tableViewCell'で実装されています。私は 'displayHeaderView'を変更するtableViewControllerしか持っていません。 – user6574269

+0

これは、tableViewControllerを通知するtableViewCellからの単一のカスタムデリゲートコールが必要です。 –

+0

@ Alexander Kimまだセルからのプロパティへの参照を見つけることができません'didselectItem'メソッドでデリゲートメソッドを実装しましたが、これはセル内にあります。拡張機能 'TableviewCell:CustomDelegate'のように' func'を呼び出すことができます – user6574269

関連する問題