添加 TableViewController 作为子视图
Add TableViewController as SubView
使用 may App 我有 2 个 TableViewControllers Inbox 和 Outbox(每个都有自己的自定义单元格)和Main ViewController Mail 下面有一个段控制器和 UIView,我正在尝试添加 tableview 控制器并在它们之间切换段控制器被推送但它根本不起作用!
邮件 ViewController :
import UIKit
class Mail: UIViewController, SegmentControllerDelegate {
func indexChanged(index: Int) {
print("index\(index)")
switch index {
case 0:
container.bringSubviewToFront(inbox)
break
case 1:
container.bringSubviewToFront(outbox)
break
default:
break
}
}
var inbox: UIView!
var outbox : UIView!
override func viewDidLoad() {
super.viewDidLoad()
inbox = storyboard?.instantiateViewController(withIdentifier: "inbox").view
outbox = Outbox().view
container.addSubview(inbox)
container.addSubview(outbox)
}
override func viewDidLayoutSubviews() {
inbox.frame = container.bounds
outbox.frame = container.bounds
}
这是当我的收件箱和发件箱表格视图充满数据时的结果
任何帮助将不胜感激
您应该使用控制器,而不仅仅是他们的意见。 (var outbox: Outbox
而不是 var outbox: UIView
,并进行适当的初始化)
你在这里做的是创建一个发件箱控制器,获取它的视图(如果没有控制器就无法正常运行);然后发件箱控制器被释放,视图没有显示(发件箱控制器,也是视图的数据源,立即被释放)。
我还会使用 TabBarController 来管理子控制器
// Create
contentTabBarController = UITabBarController()
addChild(contentTabBarController)
contentTabBarController.viewControllers = [Inbox(), Outbox()]
// Add subview either in nib file or here; do not forget to add proper constraints as well
container.addSubview(contentTabBarController.view)
//...
// Select inbox
contentTabBarController.selectedIndex = 0
// Select outbox
contentTabBarController.selectedIndex = 1
与其使用简单的 UIView,不如尝试使用 UIContainerView。
您目前所做的只是从其他控制器获取 view
。您需要创建视图控制器的实例并将它们保存在内存中。
这可以通过将它们添加为 child 视图控制器来完成:
// for both inbox and outbox table view controllers,
// instantiate
// add as child view controller
// add its view as a subview of container
// finish with .didMove()
inboxTVC = InboxTableViewController()
addChild(inboxTVC)
container.addSubview(inboxTVC.view)
inboxTVC.didMove(toParent: self)
outboxTVC = OutboxTableViewController()
addChild(outboxTVC)
container.addSubview(outboxTVC.view)
outboxTVC.didMove(toParent: self)
我已经更新了我为你的其他问题整理的项目,并实现了这个:https://github.com/DonMag/AliAdil
使用 may App 我有 2 个 TableViewControllers Inbox 和 Outbox(每个都有自己的自定义单元格)和Main ViewController Mail 下面有一个段控制器和 UIView,我正在尝试添加 tableview 控制器并在它们之间切换段控制器被推送但它根本不起作用!
邮件 ViewController :
import UIKit
class Mail: UIViewController, SegmentControllerDelegate {
func indexChanged(index: Int) {
print("index\(index)")
switch index {
case 0:
container.bringSubviewToFront(inbox)
break
case 1:
container.bringSubviewToFront(outbox)
break
default:
break
}
}
var inbox: UIView!
var outbox : UIView!
override func viewDidLoad() {
super.viewDidLoad()
inbox = storyboard?.instantiateViewController(withIdentifier: "inbox").view
outbox = Outbox().view
container.addSubview(inbox)
container.addSubview(outbox)
}
override func viewDidLayoutSubviews() {
inbox.frame = container.bounds
outbox.frame = container.bounds
}
这是当我的收件箱和发件箱表格视图充满数据时的结果
任何帮助将不胜感激
您应该使用控制器,而不仅仅是他们的意见。 (var outbox: Outbox
而不是 var outbox: UIView
,并进行适当的初始化)
你在这里做的是创建一个发件箱控制器,获取它的视图(如果没有控制器就无法正常运行);然后发件箱控制器被释放,视图没有显示(发件箱控制器,也是视图的数据源,立即被释放)。
我还会使用 TabBarController 来管理子控制器
// Create
contentTabBarController = UITabBarController()
addChild(contentTabBarController)
contentTabBarController.viewControllers = [Inbox(), Outbox()]
// Add subview either in nib file or here; do not forget to add proper constraints as well
container.addSubview(contentTabBarController.view)
//...
// Select inbox
contentTabBarController.selectedIndex = 0
// Select outbox
contentTabBarController.selectedIndex = 1
与其使用简单的 UIView,不如尝试使用 UIContainerView。
您目前所做的只是从其他控制器获取 view
。您需要创建视图控制器的实例并将它们保存在内存中。
这可以通过将它们添加为 child 视图控制器来完成:
// for both inbox and outbox table view controllers,
// instantiate
// add as child view controller
// add its view as a subview of container
// finish with .didMove()
inboxTVC = InboxTableViewController()
addChild(inboxTVC)
container.addSubview(inboxTVC.view)
inboxTVC.didMove(toParent: self)
outboxTVC = OutboxTableViewController()
addChild(outboxTVC)
container.addSubview(outboxTVC.view)
outboxTVC.didMove(toParent: self)
我已经更新了我为你的其他问题整理的项目,并实现了这个:https://github.com/DonMag/AliAdil