斯里坎特·冈德拉帕利,
您需要做的就是将 TableView 控制器的视图作为子视图添加到您的视图控制器。为了简化我个人更喜欢使用ContainerView的过程,
第 1 步:将 ContainerView 添加到您的 View Controller 并为其添加自动布局约束,因为您的 tableView 将加载到此容器视图中,您必须将任何自动布局约束应用于您的 tableView 以使其保持原位: )
例如:
第 2 步:将 IBOutlet 拖到容器视图中。让我们将其称为 containerView :)
第 3 步:现在由您决定是否拥有两个视图控制器 1 用于加载地图和 1 用于加载 tableView,或者您将地图视图作为视图控制器子视图,您将隐藏或删除它并添加容器视图但我个人更喜欢代码干净整洁,所以我更喜欢有两个不同的 VC
所以让我们创建 2 个 VC,让我们将它们称为 viewController1 和 viewController2 Savy ??
第 4 步:
让我们编写一个实际加载 VC 并将其视图作为子视图添加到您的 ViewController 的方法
func changeEmbededVC(for status : Int) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
if status == 0 {
mehereButton.tag = 1
let vc = storyboard.instantiateViewController(withIdentifier: "viewController1")
vc.willMove(toParentViewController: self)
containerView.addSubview(vc.view)
self.addChildViewController(vc)
vc.didMove(toParentViewController: self)
}
else {
mehereButton.tag = 0
let vc = storyboard.instantiateViewController(withIdentifier: "viewController2")
vc.willMove(toParentViewController: self)
containerView.addSubview(vc.view)
self.addChildViewController(vc)
vc.didMove(toParentViewController: self)
}
}
我相信代码很容易解释:D 现在mehereButton.tag = 1 是什么?很简单,您想在按钮按下时切换视图,不是吗:D 因此我为 mehereButton 创建了一个 IBOutlet 并更改了它的标签:)
现在终于在 mehereButton 的 IBAction 中
@IBAction func buttonTapped(_ sender: UIButton) {
self.changeEmbededVC(for: self.mehereButton.tag)
}
但我们需要默认加载其中一个视图,不是吗:D
所以将您的 viewDidAppear 更改为
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.changeEmbededVC(for: 0)
}
希望我详细回答了您的问题:P 我知道您既不能投票也不能接受答案,因为您没有足够的声誉 :) 但希望它将来也能对某人有所帮助:)