ViewController 不符合协议 UITableViewDataSource
Posted
技术标签:
【中文标题】ViewController 不符合协议 UITableViewDataSource【英文标题】:ViewController does not conform to protocol UITableViewDataSource 【发布时间】:2016-06-30 12:42:21 【问题描述】:我最近遇到了一个问题。
我也会发布一些代码。尝试了网上的方法,但没有成功。此外,我已将 2 个表链接到视图控制器。
这是一些代码。
class ViewController2: UIViewController, UITableViewDataSource, UITableViewDelegate
@IBOutlet weak var carImageView: UIImageView!
@IBOutlet weak var pieseDorite: UITableView!
@IBOutlet weak var pieseDisponibile: UITableView!
var fullNameArr : [String] = [] // i populate the string in a action button, no problem with the arrays
var fullNameArrDorit : [String] = []
override func viewDidLoad()
super.viewDidLoad()
carImageView.image = UIImage(named: ("simplu"))
carImageView.contentMode = .ScaleAspectFit
pieseDisponibile.delegate = self
pieseDisponibile.dataSource = self
self.view.addSubview(pieseDisponibile)
pieseDorite.delegate = self
pieseDorite.dataSource = self
self.view.addSubview(pieseDorite)
func tableView(pieseDisponibile: UITableView, numberOfRowsInSection section:Int) -> Int
return fullNameArr.count
func tableView(pieseDisponibile: UITableView, pieseDorite: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
let cell:UITableViewCell=UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")
cell.textLabel!.text = String(fullNameArr[indexPath.row])
return cell
func tableView2(pieseDorite: UITableView, numberOfRowsInSection section:Int) -> Int
return fullNameArrDorit.count
func tableView2(pieseDorite: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
let cell2:UITableViewCell=UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell2")
cell2.textLabel!.text = String(fullNameArrDorit[indexPath.row])
return cell2
另外,尝试添加所有其他功能,问题仍然存在。我想我链接了一些不好的东西,我不知道。
【问题讨论】:
将tableview2全部替换为tableview,可以在同一个data-source和delegate方法中通过Tag来识别tableview 【参考方案1】:请将所有tableView2
替换为tableView
,每个方法只保留1 个。您需要对所有 UITableView
实例具有相同的委托方法。您可以通过将第一个参数与您的 UITableView
属性进行比较来分隔此方法中的不同实例。还要添加节数方法:
override func viewDidLoad()
super.viewDidLoad()
carImageView.image = UIImage(named: "simplu")
carImageView.contentMode = .ScaleAspectFit
pieseDisponibile.delegate = self
pieseDisponibile.dataSource = self
view.addSubview(pieseDisponibile)
pieseDorite.delegate = self
pieseDorite.dataSource = self
view.addSubview(pieseDorite)
func numberOfSectionsInTableView(tableView: UITableView) -> Int return 1
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
if tableView == pieseDisponibile return fullNameArr.count
return fullNameArrDorit.count
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
if tableView == pieseDisponibile
let cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")
cell.textLabel?.text = String(fullNameArr[indexPath.row])
return cell
let cell2 = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell2")
cell2.textLabel?.text = String(fullNameArrDorit[indexPath.row])
return cell2
【讨论】:
之前自己试过,但没有成功,这就是我选择 tableView 和 tableView2 功能的原因。不知道我做错了什么,但显然您的代码在我的项目上完美运行并解决了我的项目。以上是关于ViewController 不符合协议 UITableViewDataSource的主要内容,如果未能解决你的问题,请参考以下文章
类型“ViewController”不符合协议“UITableViewDataSource”
类型 ViewController 不符合协议 SKPaymentTransactionObserver
ViewController 不符合协议 UITableViewDataSource
Swift UITableView 控制器错误:类型“ViewController”不符合协议“UITableViewDataSource”
ViewController 不符合自定义 UIButton 类
viewcontroller 是不是符合“UITableViewDataSource, Video Mode Delegate”协议?