У меня есть контроллер просмотра коллекции с несколькими ячейками. У каждой ячейки есть кнопка, и я хочу перейти к другому контроллеру представления с помощью кнопки ckick в ячейке коллекции. Я могу сделать это, щелкнув по ячейке, но я хочу сделать, нажав на кнопку в ячейке, а не щелкнув по ячейке. Я знаю, как сделать это, нажав на ячейку, например:Как перейти к другому контроллеру представления, нажав на кнопку в ячейке просмотра коллекции
override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
if let book = books?[indexPath.item] {
showBookDetail(book)
}
}
func showBookDetail(book: Book) {
let layout = UICollectionViewFlowLayout()
let bookDetailVC = BookDetailVC(collectionViewLayout: layout)
bookDetailVC.book = book
navigationController?.pushViewController(bookDetailVC, animated: true)
}
Это просто потому, что у меня есть indexPath
и может послать как параметр.
Как я пытаюсь сделать это:
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(cellId, forIndexPath: indexPath) as! BookCell
cell.chapter = books?.bookChapters?[indexPath.item]
cell.goButton.addTarget(self, action: #selector(goChapter), forControlEvents: .TouchUpInside)
return cell
}
но как отправить book
на мой FUNC goChapter
вне didSelectItemAtIndexPath
?
func goChapter() {
let layout = UICollectionViewFlowLayout()
let bookChapterVC = BookChapterVC(collectionViewLayout: layout)
bookChapterVC.chapter = self.book?.bookChapters![0] // here I want to send separate chapter of the book
navigationController?.pushViewController(bookChapterVC, animated: true)
}
Да, это работает. Благодаря! – andrey