Как отклонить UICollectionViewController от кнопки в UICollectionViewCell - PullRequest
0 голосов
/ 11 ноября 2018

Я делаю экран регистрации, на последнем экране у меня есть кнопка с надписью «продолжить», которая должна закрывать экран регистрации. Экран включения - это контроллер представления коллекции с ячейками на каждой странице. Пожалуйста, не стесняйтесь просить разъяснений. Я не знаю, что еще добавить.

Спасибо

Редактировать Так что я реализовал ответ пользователя Francesco Deliro, первая проблема заключалась в том, что я случайно добавил делегат = self в viewDidLoad (). Я исправил это, но все же viewController не закрывает глаза. Мой код выглядит следующим образом в моей ячейке viewController для элемента:

    let loginCell = LoginCell()
    loginCell.delegate = self

Вот расширение

extension TutorialViewController: LoginCellDelegate {
func didCompleteOnboarding() {
    print("I should dimiss")
    self.dismiss(animated: true, completion: nil)
}

Разве мне не нужно вызывать эту функцию где-нибудь в классе, просто оставьте ее вне основного класса.

Редактировать 2 Вот как я связал свое действие кнопки с оригинальным

    @objc func continueTapped() {
    ...
    continueButton.transform = CGAffineTransform(scaleX: 0.5, y: 0.5)
    UIView.animate(withDuration: 1.0, delay: 0, usingSpringWithDamping: 0.5, initialSpringVelocity: 1, options: .allowUserInteraction, animations: { [weak self] in
        self?.continueButton.transform = .identity
        let transition = CATransition()
        transition.duration = 0.5
        transition.type = CATransitionType.push
        transition.subtype = CATransitionSubtype.fromRight
        transition.timingFunction = CAMediaTimingFunction(name:CAMediaTimingFunctionName.easeInEaseOut)
        self?.window!.layer.add(transition, forKey: kCATransition)
        self?.delegate?.didCompleteOnboarding()
    }, completion: { (success) in
        token = true
        defaults.set(token, forKey: "DidSee")
    })
}

1 Ответ

0 голосов
/ 11 ноября 2018

Вы можете использовать делегирование, например:

protocol YourCellDelegate: class {
    func didCompleteOnboarding()
}

Тогда в твоей камере:

class CustomCell: UICollectionViewCell {
    weak var delegate: YourCellDelegate?

      // in your button action
    func dismissAction() {
        delegate.didCompleteOnboarding()
    }

 }

Наконец, в вашем контроллере представления установите делегат ячейки в функции cellForItem:

yourCell.delegate = self

И добавить:

extension YourViewController: YourCellDelegate {
    func didCompleteOnboarding() {
        // dismiss here 
    }
}
...