【发布时间】:2016-10-03 20:28:36
【问题描述】:
我在UIViewController 中实现了UITableView。我创建了一个名为HomePageTableView 的自定义类UITableView,并在情节提要中引用了它。下面是HomePageTableView和HomePageViewController的代码
主页视图控制器:
import Foundation
import UIKit
class HomePageViewController: UIViewController {
@IBOutlet var tableView: HomePageTableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.reloadData()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
主页表视图:
class HomePageTableView: UITableView, UITableViewDelegate, UITableViewDataSource {
var items: [String] = ["Item1", "Item2", "Item3"]
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.items.count;
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell:UITableViewCell = self.dequeueReusableCell(withIdentifier: "cell1")! as UITableViewCell
cell.textLabel?.text = self.items[indexPath.row]
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("You selected cell #\(indexPath.row)!")
}
}
当我尝试运行它时,tableview 会加载一个空的 tableview,并且无法选择任何单元格或显示任何内容。我根本无法选择任何单元格或与 tableview 交互。我想知道如何将数据加载到这个 tableview 中并对其进行配置,以便我可以与之交互。我考虑将 tableview 代码放入视图控制器,但将 tableview 放在自己的类中会更有用。
提前致谢!!
【问题讨论】:
-
tableView.datasource = tableView
-
我会在哪里添加这个? HomePageTableView 没有成员数据源
-
数据源代码既不属于视图控制器类,也不属于视图类。它属于它自己的类。
-
为了简单起见,现在我只是将数据放入 HomePageTableView 中的一个数组中。我下载了一个在 UIViewController 中实现所有内容的项目,它运行良好。当我删除 tableview 代码并将其放入自己的 UITableView 文件时,它只是不起作用。我记得这就是你在 Obj-c 中的做法
-
@SulaimanMajeed,这如何简化任何事情?表格视图旨在用于继承方式的组合,而不是子类化。不在 Objective-C 中,不在 Swift 中。在 7 年的 iOS 开发中,我没有遇到过一个单一的用例,其中子类化 UITableView 是正确的选择。而在 ViewController 中实现这一点只是一个不会消失的坏习惯,因为它会被没有经验的开发人员一遍又一遍地漫不经心地复制。
标签: ios uitableview uiviewcontroller swift3