【发布时间】:2019-03-04 01:29:21
【问题描述】:
我想在UIViewController 中显示UITableView。这个 View Controller 包含一个带有两个屏幕的UISegmentedControl(FirstViewController和SecondViewController)。
第一个 View Controller 是包含 UIViewTable 的那个(请不要介意第二个)。
当我在模拟器中执行应用程序时,一切正常,但是当我尝试在第一个 ViewController 中滚动表格视图时,单元格消失了。让它们重新出现的唯一方法是终止应用并重新打开它。
我是 iOS 开发的新手(我来自 Android),我显然在这里遗漏了一些东西。
我已经尝试在容器 UIView 之外添加一个 UIViewTable 并且效果很好。所以我猜这个问题与容器或分段控件有关......
这是我的实现:
- 故事板
UIViewController 与 UISegmentedControl 和 UIView(将包含分段控件的两个屏幕)。
-
视图控制器
@IBOutlet weak var container: UIView! var sectionViews:[UIView]! override func viewDidLoad() { super.viewDidLoad() sectionViews = [UIView]() sectionViews.append(FirstViewController().view) sectionViews.append(SecondViewController().view) for v in sectionViews { container.addSubview(v) } container.bringSubviewToFront(sectionViews[0]) } @IBAction func switchViewsAction(_ sender: UISegmentedControl) { self.container.bringSubviewToFront(self.sectionViews[sender.selectedSegmentIndex]) } 第一个视图控制器
FirstViewController 有一个swift 和一个xib 文件,并且有两个文件Cell.swift 和Cell.xib 用于表格单元格。
FirstViewController.swift
@IBOutlet weak var tableView: UITableView!
let cellID = "CellId"
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.register(UINib(nibName: "Cell", bundle: nil), forCellReuseIdentifier: cellID)
self.tableView.dataSource = self
self.tableView.delegate = self
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 100
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = self.tableView.dequeueReusableCell(withIdentifier: cellID, for: indexPath) as! Cell
cell.label.text = "\(indexPath.row)"
return cell
}
FirstViewController.xib
Cell.xib
任何帮助将不胜感激! 谢谢
【问题讨论】:
标签: ios swift uitableview