Я знаю, что вопрос уже есть на форуме, но я не знаю, почему мой делегат не работает. Работаю с ними, кстати, впервые.
Вот код
Вьюконтроллер:
class ViewController: UIViewController, ContainerViewControllerDelegate{
override func viewDidLoad() {
super.viewDidLoad()
let controller = ContainerViewController()
controller.containerDelegate = self
}
func didScrollChangeAppearanceBarButtonItem(change: Bool) {
if(change == true){
print("true")
}else{
print("false")
}
}
}
КонтейнерВью:
protocol ContainerViewControllerDelegate {
func didScrollChangeAppearanceBarButtonItem(change: Bool)
}
class ContainerViewController: UIViewController, UIScrollViewDelegate{
var containerDelegate: ContainerViewControllerDelegate?
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
if(velocity.y>0) {
containerDelegate?.didScrollChangeAppearanceBarButtonItem(change: false)
print("1")
} else {
containerDelegate?.didScrollChangeAppearanceBarButtonItem(change: true)
print("2")
}
}
}
Что я пытаюсь сделать: когда я прокручиваю, я хочу отправить bool моему ViewController. Когда bool == true, я хочу что-то сделать, а когда bool == false, я хочу сделать что-то еще.
Я надеюсь, что кто-нибудь может мне помочь :)
ContainerViewController()
не является экземпляром в раскадровке. Вам нужна реальная ссылка по переходу или созданию экземпляра. - person vadian   schedule 15.04.2020print("1")
иprint("2")
вызываются? В таком случаеcontainerDelegate
равно нулю? Не могли бы вы сделатьlet controller = ContainerViewController()
переменной экземпляра? Может быть проблема масштаба. Что такоеcontroller
? - person Larme   schedule 15.04.2020nil
, потому что это не тот экземпляр. Как я уже сказал, экземпляр в раскадровке иcontroller
— это два совершенно разных объекта. - person vadian   schedule 16.04.2020let storyboard = UIStoryboard(name: "Main", bundle: nil); let controller = storyboard.instantiateViewController(withIdentifier: "ContainerViewController") as! ContainerViewController; controller.containerDelegate = self
- person Lukas   schedule 16.04.2020