我的项目中有4个文件:
这是我实施的内容:
myTableViewController.swift:
import UIKit
class myTableViewController: UIViewController {
let cellIdentifier: String = "myCell"// set same id in storyboard as well
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
setup()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func setup(){
let myDataSource = myTableViewDataSource.init(str: "init!")
tableView.registerNib(UINib(nibName: "myCustomCell", bundle: nil), forCellReuseIdentifier: "myCell")
tableView.dataSource = myDataSource
}
myTableViewDataSource.swift:
import UIKit
class myTableViewDataSource: NSObject, UITableViewDataSource, UITableViewDelegate {
init(str:String) {
print(str)
}
// MARK: UITableViewDataSource
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
print("section")
return 3
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
print("row")
return 5
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath) as! myCustomCell
print("where's my cell")
return cell;
}
}
我试图做的只是让dataSource成为另一个类,并将它的实例变量分配给我的tableView。
更新
根据@Rajan Maheshwari的说法
在tableview.reloadData()
底部添加setup()
获得了正确的部分/行号,
但仍然没有打印"where's my cell"
......因为cellForRowAtIndexPath
从未执行过。
我在这里可能遇到的问题是什么?