pro*_*der 4 uitableview uiviewcontroller ios swift
我有一个UIViewController
我嵌入了一个UITableView
.如果为我的ViewController类添加了一个插座.
因为我不想ViewController
太重,所以我想把UITableViewDataSource
协议和UITableViewDelegate
协议的方法放到不同的类中.
所以我创建了一个TableViewDataSource.swift和一个TableViewDelegate类:
class TableViewDelegate : NSObject, UITableViewDelegate {
//custom code here if required
}
class TableViewDataSource : NSObject, UITableViewDataSource {
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cellIdentifier = "MyCellIdentifier"
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath)
cell.textLabel?.text = "left text"
cell.detailTextLabel?.text = "right text"
return cell
}
}
class ViewController: UIViewController {
@IBOutlet var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = TableViewDataSource()
tableView.delegate = TableViewDelegate()
tableView.setNeedsDisplay()
// Do any additional setup after loading the view, typically from a nib.
}
}
Run Code Online (Sandbox Code Playgroud)
在我的Storyboard中,我在tableView中创建了一个原型单元格,标识符为"MyCellIdentifier".我使用此标识符在我的TableViewDataSource方法中创建一个单元格.
但是,如果我运行应用程序,我只会看到一个空的tableView.即使我已经在ViewController的viewDidLoad方法中设置了这些方法,也不会调用这些方法.我还尝试通过调用setNeedsDisplay来强制执行tableView重绘.这也没有效果.
你走在正确的轨道上,我相信你的问题很容易解决.看这里:
tableView.dataSource = TableViewDataSource()
tableView.delegate = TableViewDelegate()
Run Code Online (Sandbox Code Playgroud)
这创造了一个新的TableViewDataSource
和新的TableViewDelegate
,dataSource
并delegate
分别分配给他们.以下是这些属性UITableView
:
weak public var dataSource: UITableViewDataSource?
weak public var delegate: UITableViewDelegate?
Run Code Online (Sandbox Code Playgroud)
请注意weak
一下?你正在创建它们并将它们分配给一个弱的属性,所以它们会很快被抛弃.
您的解决方案是为视图控制器中的这两个新对象创建属性,然后在其中创建这些属性viewDidLoad()
并将其发送到表视图中.
归档时间: |
|
查看次数: |
1848 次 |
最近记录: |