2015-01-22 5 views
1

У меня есть вкладка бар класс (который прилагается к моему контроллеру бар вкладки), например, так:Как передавать данные между двумя ViewControllers с TabBarController в Swift

class CaptionTabBarController: UITabBarController, UITabBarControllerDelegate { 

    func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) { 
    var logView = self.viewControllers![2] as CaptionsController 
    logView.log.append("test working!") 
    } 

    override func awakeFromNib() { 
    self.delegate = self; 
    } 
} 

И мой приемный ViewController, как это:

class CaptionsController: UIViewController { 

@IBOutlet weak var captionSearchBar: UISearchBar! 
@IBOutlet weak var captionsTitle: UILabel! 
var receiveImage:UIImage! 
var receiveCategoryText:String! 
var log = [String]() 

override func viewDidAppear(animated: Bool) { 
    super.viewDidAppear(animated) 
    println(log) 
} 
} 

Это работает, когда я явно устанавливая logView.log в CaptionTabBarController.

Результат, который я получаю в своих выходных окнах, как и ожидалось. Каждый элемент вкладки, который я нажимаю, добавляет «test working!». к массиву.

Мой вопрос:

Как я мог бы получить значение из другого класса ViewController к CaptionsController с помощью tabBarController метода я использующую?

Это представление является частью «дочернего» самой панели, поэтому я предполагаю, что у нее уже есть экземпляр. Все примеры, которые я нашел, просто показывают это, но не как получить данные из другого класса.

ответ

1

UIViewController, который хочет передать данные, может хранить их на вашем AppDelegate классах. Затем метод делегата UITabBarController может отключить его и установить свойства на прием UIViewController.

Кроме того, если ваше приложение основано на контроллере табуляции, ваш AppDelegate может найти его с помощью window?.rootViewController as UITabBarController.

+0

Честно. Я пытаюсь примириться с некоторыми фундаментальными понятиями в быстром, так как я только начал развиваться в такой среде (без объективного опыта). Я не совсем уверен, как использовать класс «AppDelegate» и как его вытащить в «UITabBarController». – zillaofthegods

+0

@ fred02138 подробности? – nsij22

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