2017-02-10 3 views
0

У меня есть приложение Swift, которое использует Firebase. В этой части приложения есть 2 VC, которые находятся в контроллере панели вкладок, а затем контроллер навигации. Итак, TBC -> NavC -> VC.Пропустить строку между двумя контроллерами просмотра в панели вкладок

Мне нужно передать строку из основного TBC VC. Это идентификатор firebase для карты. Используя этот идентификатор, я могу получить доступ ко всем детям на узле этой карты, но без этого я не могу.

Я попытался с помощью prepareForSegue ..

let tabVc = segue.destination as! UITabBarController 
let navVc = tabVc.viewControllers!.first as! UINavigationController 
let destinationVC = navVc.viewControllers.first as! MonthlyNutViewController 

destinationVC.cardID = cardID 
print(cardID) 

Я поставил точку останова на том, что и он не попал.

Я видел несколько старых сообщений SO, предлагающих создать глобальную переменную в appDelegate, но я думал, что это было неодобрительно.

Каким будет лучший способ передать эту строку? Спасибо.

ответ

0

Если это всего лишь одна переменная, я бы пошел на appDelegate. У вас также есть возможность создать синглтон для хранения более сложной модели данных.

Просто объявить переменную в appDelegate

class AppDelegate: UIResponder, UIApplicationDelegate { 
    var myFirebaseString : String? 

, а затем получить доступ к нему из ваших ViewControllers

let appDelegate = UIApplication.shared.delegate as! AppDelegate 
appDelegate.myFirebaseString = "key" 

, а затем во втором контроллере

let appDelegate = UIApplication.shared.delegate as! AppDelegate 
ley localKey = appDelegate.myFirebaseString