我已经启动了我的第一个应用,我希望该应用有一个可作为待办事项列表的视图,但是,我正在键入' ThirdViewController'不符合协议UITableViewDataSource 作为我的代码中的错误。我已经看了一个类似的线程,但没有找到解决方案
import UIKit
class ThirdViewController: UIViewController, UITableViewDataSource, UITableViewDelegate
{
var list = ["Math Homework", "English Project", "Bio Quiz"]
@IBOutlet weak var myTableView: UITableView!
override func viewDidLoad()
{
super.viewDidLoad()
}
override func didReceiveMemoryWarning()
{
super.didReceiveMemoryWarning()
}
public func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return list.count
}
public func tableView(tableView: UITableView, cellForRowAt indexPath: NSIndexPath) -> UITableViewCell
{
let cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "cell")
cell.textLabel?.text = list[indexPath.row]
return cell
}
}
答案 0 :(得分:1)
如Apple Developer文档中所述,您需要以下方法:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
您改为使用这些:
public func tableView(tableView: UITableView, cellForRowAt indexPath: NSIndexPath) -> UITableViewCell
public func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
从这两种方法中删除public
,它应该可以正常工作。另外,请在_
之前添加tableView:
。
参考:
https://developer.apple.com/reference/uikit/uitableviewdatasource
修改强> 我描述的方法适用于Swift 3.如果您使用的是Swift 2.3,这些应该是您的方法:
func tableView(tableView: UITableView, cellForRowAt indexPath: NSIndexPath) -> UITableViewCell
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
几乎与您在第一时间使用的相同,但没有public
。
答案 1 :(得分:0)
为UITableViewDataSource和UITableViewDelegate实现所需的协议方法。
你失踪了;func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}