создание раскадровки из нажатия кнопки внутри ячейки представления коллекции - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь создать экземпляр раскадровки с помощью нажатия кнопки в ячейке представления коллекции, но сталкиваюсь с ошибками:

class sampleCell: UICollectionViewCell {

    @IBAction func infoButtonPressed(_ sender: Any) {

        let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "InputViewController") as! InputViewController//error: Use of undeclared type "InputViewController"

        present(vc, animated: false)//error:Use of unresolved identifier 'present'
    }
}

Есть идеи, как это сделать?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Вы столкнулись с ошибкой, потому что present(_:animated:completion:) - это метод экземпляра UIViewController, но не UITableViewCell.

Итак, вместо этого вам нужно найти способ обработки действия кнопки в представлении.контроллер, который содержит табличное представление вместо попытки представить контроллер представления из класса ячеек.

Учитывая, что вы будете следовать следующему ответу: https://stackoverflow.com/a/28895402/5501940

, вы сможете вызватьПредставьте метод в методе выбора кнопок:

@objc func buttonTapped(sender: UIButton) {
    let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "InputViewController") as! InputViewController
    present(vc, animated: false)
}

Также убедитесь, что у вас есть InputViewController контроллер представления.

0 голосов
/ 14 декабря 2018

1- У вас нет класса с именем InputViewController

let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "InputViewController") as! InputViewController 

2- Вы не можете представить vc внутри ячейки, вам нужен делегат

present(vc, animated: false) 

Заметка только для основной раскадровки, которую можно заменить

UIStoryboard(name: "Main", bundle: nil)

на (но внутри видеоконференции также)

self.storyboard

Редактировать: ---------------------------------------------------------

внутри клетки

class sampleCell: UICollectionViewCell {
  weak var delegate:CurrentController?
}

Затем внутри cellForItemAt

let cell = /////
cell.delegate = self

Добавить в vc

func goToInput() {

    let vc = self.storyboard!.instantiateViewController(withIdentifier: "InputViewController") as! InputViewController//error: Use of undeclared type "InputViewController" 
    present(vc, animated: false) 

}

Послечто внутри клетки действие

@IBAction func infoButtonPressed(_ sender: Any) {
  delegate?.goToInput()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...