gpt4 book ai didi

ios - UITableView 委托(delegate)使用扩展 swift

转载 作者:IT王子 更新时间:2023-10-29 05:13:57 28 4
gpt4 key购买 nike

我认为这是一个相当简单的问题。我已将我的 UITableView 委托(delegate)/数据源分离到它们自己的扩展中

//MARK: - UITableView Data Source/Delegate

extension TweetsViewController: UITableViewDataSource {
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 0
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! TweetCell
return cell
}
}

但是在 View Controller 中我需要设置 tblView 委托(delegate)

class TweetsViewController : UIViewController {

@IBOutlet weak var tblView: UITableView!


var fetchedResultsController : NSFetchedResultsController!

//MARK: View Management

override func viewDidLoad() {
super.viewDidLoad()

tblView.dataSource = self


}
}

但是,由于 View Controller 不符合协议(protocol),而是让扩展处理它们,那么我如何显式设置 tableView 的数据源和委托(delegate)?谢谢!

最佳答案

您可以在扩展中划分,因为您可以在 apple documentation 中 checkin 关于扩展处理协议(protocol)的部分。

这里我已经实现了一个最小的代码来完成你的要求,检查一下。

  import UIKit


class TableViewViewController: UIViewController {
@IBOutlet weak var table: UITableView!

override func viewDidLoad() {
super.viewDidLoad()
table.delegate = self
table.dataSource = self
}
}

extension TableViewViewController: UITableViewDelegate,UITableViewDataSource {

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath)
cell.textLabel!.text = "it works"
return cell
}

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
}

关于ios - UITableView 委托(delegate)使用扩展 swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35306862/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com