我有UIViewController以及如何将UIViewController转换为Class.swift。类已初始化...
MainController.staticInstance.viewControllers?[1] as! Destination
MainController是扩展UITabBarController的类。我想从UITabBar获取子控制器,并将其转换为父级的Class。
明显的例子:
class MainController: UITabBarController {
override func viewDidLoad() {
(self.viewControllers?[1] as! Destination).itsMyFunction();
}
}
最大详细信息:
1节课
class First: UIViewController {
func itsMyFunction() {
print("Hello world!")
}
}
这是我在STORYBOARD中上课的班级!
2节课
class MainController: UITabBarController {
func override viewDidLoad() {
// Here I set index UITabBar ITEM which attach to MAIN UiTabBarController
self.selectedIndex = 0
// NOW I want to get INSTANCE CLASS First
(self.viewControllers?[1] as! First).itsMyFunction();
}
}
答案 0 :(得分:0)
这样,如果类型不同,则会崩溃。尽量避免使用!随时你可以。 使用弱转换,并评估未包装的类型(如果属于您)。
if let destination = destMainController.staticInstance.viewControllers?.first as? Destination {
destination.itsMyFunction()
}
答案 1 :(得分:0)
可以请您按照此设置示例进行操作吗?
class TabBarViewController: UITabBarController {
let firstVC = First()
let secondVC = SecondViewController()
override func viewDidLoad() {
super.viewDidLoad()
firstVC.tabBarItem = UITabBarItem(tabBarSystemItem: .search, tag: 0)
secondVC.tabBarItem = UITabBarItem(tabBarSystemItem: .more, tag: 1)
let tabBarList = [firstVC, secondVC]
viewControllers = tabBarList
if let destination = viewControllers?.first as? First {
destination.itsMyFunction()
}
}
}
似乎您无法获得Class
的{{1}}实例,因为根据发布的代码,您的controller
数组为空。让我知道它是否有效。