Два View передать название и жест в Label

uiview
xcode
swift3
ios

#1

Создать два вью(вью1,вью2) на екране и лейбл, привязать все к контроллеру (убедитесь, что вью на экране вашего типа), подписать контроллер на протокол и реализовать методы протокола таким образом, что бы лейбл на екране сообщала что за жест произошел и в каком вью(вью1,вью2). Подписание VC на протокол и реализацию методов делать в extension для VC

И так, у вас на экране два вью и лейбл, пользователь кликает на вью1 и лейбл меняет свой текст «there was tap in view 1», затем пользователь делает свайп во втором вью и лейбл меняется на «there was swipe in view 2»

Ребят подскажите как передать значения из делегата в myView на лейбел во ViewControler?


#2

НУ все очень просто!
1 Cоздайте класс MyView
2 В этом классе добавлем обработчик жестов
3 Для простоты создаем enum (GestureType), который будет описывать наши жесты (тап, долгий тап, свайп и тд)
4 Создаем протокол (MyViewDelegate), в котором будет

fun gestureHandler(gesture: GestureType, view: UIView){}

5 В классе MyView создаем переменную для нашего делегата:

   weak var myViewDelegate : MyViewDelegate?

6 В обработчике жестов добавляем строку

 myViewDelegate. gestureHandler(gesture: GestureType(тут передаем жест который обработали), view: self)

7 В контроллере добавляем наши вью и лейбл
8 Не забываем подписаться под протокол:

 class  MyViewController:  UIViewController, MyViewDelegate {}

9 Не забываем указать делегат для каждого View:

view1. myViewDelegate = self
view2. myViewDelegate = self

10 Реализовываем метод делегата в контроллере:

     fun gestureHandler(gesture: GestureType, view: UIView){
     // тут проверяем какая это вью(у нас для этого есть аутлеты view1 и view2  и принимаемый параметр view )
     //  делаем обычный свич по принятому жесту(gesture), и в зависимости от типа меняем лейблТекст
     }

Вот и все! и описать это было на много дольше чем сделать)