我已经尝试过以下大量示例以及SO上的其他questions。正在添加视图控制器,但它将视图容器放入视图而不是视图容器。这是我的意思。将视图控制器添加到容器视图覆盖视图
我有主视图控制器和容器视图上的标签栏。当点击标签栏上的项目时,应该抓住控制器并将其加载到容器视图中。这是我如何做的代码。
@IBOutlet weak var tabBar: UITabBar!
@IBOutlet weak var containerView: UIView!
var currentViewController: UIViewController!
var radarViewController: UIViewController!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let storyboard = self.storyboard
let currentViewController = storyboard?.instantiateViewController(withIdentifier: "WeatherCurrentViewController") as! WeatherCurrentViewController
self.currentViewController = UINavigationController(rootViewController: currentViewController)
let radarViewController = storyboard?.instantiateViewController(withIdentifier: "WeatherRadarViewController") as! WeatherRadarViewController
self.radarViewController = UINavigationController(rootViewController: radarViewController)
}
func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
if item.tag == 1 {
containerView.addSubview(currentViewController!.view)
currentViewController.didMove(toParentViewController: self)
}
if item.tag == 2 {
containerView.addSubview(radarViewController!.view)
radarViewController.didMove(toParentViewController: self)
}
}
这是Swift 3.我不知道我做错了什么。任何帮助表示赞赏。
更新
虽然我从来没有得到的视图切换到许多变化/尝试后编程工作,我没有找到使用塞格斯多视图容器的另一种方式(here,不是理想的,因为它占用了更多的内存但它的工作原理。
你能解释一下这进一步“它放置查看容器到视图中而不是视图控制器。' – Frankie
@Frankie我看起来不会把它放在视图容器中,但父视图 –