因此,我在Xcode中收到“Type ViewController不符合协议UITableViewDataSource”错误。我已经实现了所需的功能:

  • cellForRowAtIndexPath
  • numberOfRowsInSection

  • 我什至确保已经告诉Xcode有多少节(不是必需的)。这是一个单视图应用程序,我已经确保在Storyboard中正确设置了我的引用。所以我的Outlet是我的视图和我的表视图。为数据源设置了我的参考出口,并将其委托为我的表视图。

    这是代码。

    ViewController.swift
    import UIKit
    
    class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
        @IBOutlet weak var tableView: UITableView!
    
        var items: [String] = ["We", "Dislike", "Swift", "Very", "Much", "Right", "Now"]
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
            self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
    
            tableView.delegate = self
            tableView.dataSource = self
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    
        func numberOfSectionsInTableView(tableView: UITableView) -> Int{
            return 1
        }
    
        func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            return self.items.count
        }
    
        func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
    
            let cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath:indexPath) as UITableViewCell
            cell.textLabel?.text = self.items[indexPath.row]
    
            return cell
        }
    
        func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
            println("You selected cell #\(indexPath.row)!")
        }
    
    }
    

    编辑:另外,我知道我不需要StoryViewboard中为其分配的tableView.delegate和tableView.dataSource,但我认为我将包括它们以确保大家都知道我知道要对其进行设置。

    最佳答案

    UITableViewDataSource协议已更改了一点。尝试:

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
    

    关于ios - UITableView和UITableViewDataSource,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26723415/

    10-09 06:31