Показать контроллер представления с выбранным элементом TableView и контроллером панели вкладок
Я пытаюсь представить SharkProfileTableViewController
от моего Main.storyboard
файл с TabBarViewController
от действия кнопки в модальном представлении в Upload.storyboard
у которого нет панели вкладок.
ViewController, который я пытаюсь представить, является выбранным элементом из SharksTableViewController
просмотр таблицы на основе данных модального представления.
Как мне показать SharkProfileViewController
вместе с TabBarViewController
?
@IBAction func viewProfileButtonPressed(_ sender: UIButton) {
let stb = UIStoryboard(name: "Main", bundle: nil)
let tabBar = stb.instantiateViewController(withIdentifier: "tabBar") as! TabBarViewController
let sharkTabBar = stb.instantiateViewController(withIdentifier: "sharkTableView") as! SharksTableViewController
let sharkProfile = stb.instantiateViewController(withIdentifier: "sharkProfile") as! SharkProfileTableViewController
sharkProfile.selectedShark = shark as JSONObject
tabBar.selectedIndex = 3
self.present(tabBar, animated: true) {
}
}
TabBarController - вкладка "Акула" - это вкладка, которая должна отображать
SharksTableViewController - при выборе элемента в этом табличном представлении он представляет...
SharkProfileTableViewController - это представление, которое я пытаюсь представить (с отображением панели вкладок)
1 ответ
Если вы хотите передать какие-либо данные SharkProfileTableViewController
что вы добавили в UITabbarController
тогда вы можете получить к нему доступ, используя viewControllers
собственностью UITabbarController
, viewControllers
свойство вернет массив UIViewController
так что вам нужно получить к нему доступ, используя индекс с вашим индексом контроллера на вкладке.
@IBAction func viewProfileButtonPressed(_ sender: UIButton) {
let stb = UIStoryboard(name: "Main", bundle: nil)
let tabBar = stb.instantiateViewController(withIdentifier: "tabBar") as! TabBarViewController
//If SharkProfileTableViewController at 4 position in tabbar then access it from array like this
let nav = tabBar.viewcontrollers?[3] as! UINavigationController
let sharkProfile = stb.instantiateViewController(withIdentifier: "sharkProfile") as! SharkProfileTableViewController
sharkProfile.selectedShark = shark as JSONObject
tabBar.selectedIndex = 3
self.present(tabBar, animated: true) {
nav.pushViewController(sharkProfile, animated: false)
}
}
Теперь вам нужно просто изменить индекс в viewcontrollers?[3]
получить доступ к другому контроллеру из массива.