在另一个视图控制器中添加一个视图控制器作为子视图
Add a view controller as a subview in another view controller
我已经读过这个 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
但是当视图加载时它是 coverUp/hide tabBar。
如何解决这个问题并在我指定的容器中显示 viewController
。
项目 Link - GitHub
我可以通过以下更改以某种方式解决您的问题:
将此方法 carbonTabSwipeNavigation.insert(intoRootViewController: self)
替换为 viewDidLoad
中的 carbonTabSwipeNavigation.insert(intoRootViewController: self, andTargetView: containerView)
注意:将 UITaBar
底部约束赋予 SuperView 而不是 SafeArea:
在ViewController中添加以下代码:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
tabbar.invalidateIntrinsicContentSize()
}
当您 运行 执行此操作后,您将 UITabBar
:
我已经读过这个 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
但是当视图加载时它是 coverUp/hide tabBar。
如何解决这个问题并在我指定的容器中显示 viewController
。
项目 Link - GitHub
我可以通过以下更改以某种方式解决您的问题:
将此方法 carbonTabSwipeNavigation.insert(intoRootViewController: self)
替换为 viewDidLoad
carbonTabSwipeNavigation.insert(intoRootViewController: self, andTargetView: containerView)
注意:将 UITaBar
底部约束赋予 SuperView 而不是 SafeArea:
在ViewController中添加以下代码:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
tabbar.invalidateIntrinsicContentSize()
}
当您 运行 执行此操作后,您将 UITabBar
: