#storyboard #segue #swift3 #xcode8
#раскадровка #segue #swift3 #xcode8
Вопрос:
У меня есть два разных типа профилей для пользователей. Один предназначен для обычных пользователей, а другой — для премиум-пользователей. Я создал приложение, используя Storyboard
in Xcode 8
. После запуска приложения оно запрашивает пользователя, является ли он обычным участником или премиум-участником. Для общего элемента поток отлично работает с подключенными переходами Storyboard
. Значок UITabbar
с профилем переводит пользователя в профиль. Но как я могу загрузить профиль премиум-пользователей в том же Storyboard
программном режиме?
Комментарии:
1. О чем именно вы просите? «Как заменить a
UIViewController
внутри aUITabbarController
?» Или «Как создать экземплярUIViewController
из раскадровки программно»? Или оба?2. Я хочу условную проверку профиля. Независимо от того, нажал ли пользователь кнопку «премиум-участник», а затем нажал кнопку на панели вкладок, он перейдет в профиль участника premiumm. Но я связал все viewcontrollers в раскадровке перетаскиванием CTRL. Как я могу сделать это программно
Ответ №1:
A UITabbarController
имеет Array
свойство, которое содержит UIViewController
s, представленные его вкладками. У меня нет времени на тестирование, но в принципе вы можете получить его через:
let tabBarController = self.view.window.rootViewController
let viewControllers = tabBarController.viewControllers
Затем вы можете изменить его в соответствии с вашими потребностями, например, установить премиум-логин на первую вкладку:
let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil)
let premiumVc = storyboard.instantiateViewControllerWithIdentifier("identifierOfPremiumVC_mustBeSetInStoryboardsInspector") as! UIViewController
viewControllers[0] = premiumVc