【发布时间】:2018-04-10 10:19:53
【问题描述】:
我有一个 UIView (MyView) 的子类,我已将它连接到一个 NIB 文件。
class MyView: UIView {
@IBOutlet var contentView: UIView!
@IBOutlet weak var tableView: UITableView!
override init(frame: CGRect) {
super.init(frame: frame)
self.setup()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.setup()
}
let nibName = "MyView"
private func setup() {
let bundle = Bundle.init(for: type(of: self))
bundle.loadNibNamed(nibName, owner: self, options: nil)
contentView.frame = self.bounds
contentView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
self.addSubview(contentView)
}
}
这个视图很简单;仅包含一个UITableView(或tableView)。但是,我想将UITableViewCell 和UILabel 添加到tableView,但情节提要不允许我这样做。
我知道MyView 不是视图控制器,因此不应该(如果遵循 MVC 模式)实现各种表视图数据源/延迟方法,但是,为什么我仍然可以不将此表格视图单元格添加到此自定义视图中的表格视图?
我的目标是拥有一些 UIViewController 子类,该子类具有 MyView 的实例,即
var myView = MyView(),
然后它控制数据源和委托方法,即
myView.tableView.dataSource = self.
最后,我附上了一个屏幕截图,显示我无法将此表格视图单元格添加到表格视图中。
【问题讨论】:
-
我了解 MyView 不是视图控制器,因此无法实现各种表视图数据源/延迟方法 - 为什么不呢?
-
“我知道 MyView 不是视图控制器,因此无法实现各种表视图数据源/延迟方法”这是不正确,你可以
class MyView: UIView, UITableViewDataSoruce {...}和它应该可以正常工作... -
请以粗体查看编辑。我希望视图和控制器分开以遵循 MVC 设计模式。
标签: ios swift uitableview uiview