在另一个视图控制器中添加视图控制器作为子视图
Posted
技术标签:
【中文标题】在另一个视图控制器中添加视图控制器作为子视图【英文标题】:Add a view controller as a subview in another view controller 【发布时间】:2018-09-13 08:44:36 【问题描述】:我已经读过这个 LINK ,但不适合我。我想在另一个viewController
中将viewController
显示为子视图。
这是我的代码 -
import UIKit
import CarbonKit
class ViewController: UIViewController, CarbonTabSwipeNavigationDelegate
@IBOutlet weak var containerView: UIView!
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let items = ["All", "WOMEN", "MEN", "KIDS", "HOME", "CITY"]
let carbonTabSwipeNavigation = CarbonTabSwipeNavigation(items: items, delegate: self)
carbonTabSwipeNavigation.insert(intoRootViewController: self)
func carbonTabSwipeNavigation(_ carbonTabSwipeNavigation: CarbonTabSwipeNavigation, viewControllerAt index: UInt) -> UIViewController
// let screen = self.storyboard?.instantiateViewController(withIdentifier: "demo") as! demo
// showSubViewContrller(subViewController: vc)
// return screen
let storyBoard = getStoryBoardByIndentifier(identifier: "All")
let vc = storyBoard.instantiateViewController(withIdentifier: "AllViewController") as! AllViewController
showSubViewContrller(subViewController: vc)
return vc
//Subview Controller
func showSubViewContrller(subViewController:UIViewController)
self.addChildViewController(subViewController)
subViewController.view.frame = containerView.frame
self.containerView.addSubview(subViewController.view)
subViewController.didMove(toParentViewController: self)
func getStoryBoardByIndentifier(identifier:String)->UIStoryboard
return UIStoryboard.init(name: identifier, bundle: nil)
我有一个NavigationBar
和一个tapBar
。想在 container
的视图中显示 viewController
。
但是当视图加载时它会覆盖/隐藏 tabBar。
如何解决这个问题并在我指定的容器中显示viewController
。
项目链接-GitHub
【问题讨论】:
【参考方案1】:不知何故,我能够通过以下更改解决您的问题:
用viewDidLoad
中的carbonTabSwipeNavigation.insert(intoRootViewController: self, andTargetView: containerView)
替换这个方法carbonTabSwipeNavigation.insert(intoRootViewController: self)
注意:将UITaBar
底部约束赋予 SuperView 而不是 SafeArea:
在 ViewController 中添加以下代码:
override func viewDidLayoutSubviews()
super.viewDidLayoutSubviews()
tabbar.invalidateIntrinsicContentSize()
执行此操作后,您将在运行时UITabBar
:
【讨论】:
@MdRashedPervez 为您工作? 非常感谢您的帮助。这个对我有用 :) 。但是另一个问题出现了——当 tabBar 视图出现在容器上时,段标题就消失了。你能帮我解决这个问题吗? :) 我已经检查过 Tabbar 没有引起问题。看起来carbonTabSwipeNavigation.insert(intoRootViewController: self, andTargetView: containerView)
有问题以上是关于在另一个视图控制器中添加视图控制器作为子视图的主要内容,如果未能解决你的问题,请参考以下文章
UITableViewController 作为小视图中的子视图控制器 - 键盘问题