2016-06-15 2 views
0

Я пытаюсь создать приложение, в котором есть панель вкладок. Вид с 2 просмотров. Первый содержит tableView. Со вторым вы можете добавить Elements в tableView. Теперь я хочу иметь возможность общаться между ними.Табло; childView segues

Есть ли какие-то переходы при переключении вкладок в контроллере панели вкладок? Как я могу их перехватить? Если нет, есть ли другие возможности для связи между двумя видами?

ответ

0

Вы можете перехватывать фактическое переключение между контроллерами зрения с помощью UITabBarControllerDelegate с помощью метода tabBarController:didSelectViewController::

Сообщает делегат, что пользователь выбрал элемент в панели вкладок.

Существует изящная реализация вы можете сделать, зайдя в библиотеку объектов и поиск «объект»:

enter image description here

Перетащите его в ваш контроллер представления Tab бара и установить его делегат по Ctrl + перетащить.

Выберите его:

enter image description here

и установить пользовательский класс в инспекторе:

enter image description here

При щелчке правой кнопкой мыши на объект, вы должны увидеть:

enter image description here

Вот пример вашей CustomClass:

class CustomClass : NSObject, UITabBarControllerDelegate 
{ 
    func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) 
    { 
    } 
} 

Хотя пары ViewController является:

Контроллер вида, что пользователь выбрал. В iOS v3.0 и более поздних версиях это может быть тот же самый контроллер, который уже был выбран.

Это означает, что вам необходимо проверить, какой именно VC это.

+0

Я сделал это, но tabBarController() не получают казнены. – Felix

+0

Это именно то, что вам нужно, помните, что ваш VC должен быть контроллером просмотра панели вкладок. Если обратный вызов не работает, это означает, что вы не установили делегат так, как должны. Таким образом, обратные вызовы происходят, но НЕ к вашему customClass. Я обновил ответ, как ваш объект должен выглядеть, когда вы нажимаете на него правой кнопкой мыши. – OhadM

+0

спасибо, я нашел решение самостоятельно. 'let ctrl = super.parentViewController как! UITabBarController для saveCtrl в ctrl.viewControllers! { if saveCtrl is SaveViewController { print ("Worked") let newSaveCtrl = saveCtrl as! SaveViewController новыйSaveCtrl.saveDelegate = {(новое_значение: String) в self.Elemente.append (NEWVALUE) }} } ' – Felix

0

я понял решение сам:

let ctrl = super.parentViewController as! UITabBarController 

    for saveCtrl in ctrl.viewControllers! { 
     if saveCtrl is SaveViewController { 
      print("Worked") 
      let newSaveCtrl = saveCtrl as! SaveViewController 
      newSaveCtrl.saveDelegate = 
       {(newValue: String) in 

        self.Elemente.append(newValue) 

       } 
     } 
    } 
+0

Кто именно это называет? Есть ли для этого делегат? Как вы перехватываете фактический щелчок пользователем? – OhadM

+0

это происходит в viewDidLoad() VC с помощью tableView. Когда вы запускаете приложение, этот VC появляется, и этот код запускается. В моем SaveController, который добавляет Elements в tableView, saveDelegate получает инициализацию с помощью этого кода, и если я нажму на сохранение, он запустит saveDelegate. Надеюсь, вы это понимаете: P – Felix

Смежные вопросы