ImagesTabViewController'不符合协议' UITableViewDataSource'

时间:2015-03-30 15:59:27

标签: ios xcode swift

我知道这个问题已被问了一百万次,但我无法找到解决这个具体问题的方法。我正在使用Xcode 6.3 beta 4和Swift 1.2,自上次更新以来,我无法获得支持数据源和委托协议工作的常规UITableView。

我收到了numberOfRowsInSection函数的上述错误和“与之前值的定义冲突”。在这一点上,我不知道这是一个Swift变化还是我遗漏了一些东西。 tableview已正确连接..

感谢您的帮助。

class ImagesTabViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

var collectionInfo: NSArray = DataManager.getUserCollections()

var items: NSMutableArray = []
var namesArray: NSMutableArray = []

override func viewDidLoad() {
    super.viewDidLoad()

    APIManager().getData() { completed in
        dispatch_async(dispatch_get_main_queue(), { () -> Void in
            if completed {

                self.collectionInfo = DataManager.getUserCollections()
                var collectionNames: AnyObject = self.collectionInfo[3]
                println(collectionNames)


                self.items = NSMutableArray(array: self.collectionInfo)
            } else {
                //do something else
            }
        })
    // Do any additional setup after loading the view.
}

 func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        // #warning Potentially incomplete method implementation.
        // Return the number of sections.
        return 1
    }


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

        var collectionsAndArrays = PSCollection()
        let cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")

        // Configure the cell...

        collectionsAndArrays = self.items[indexPath.row] as! PSCollection
        cell.textLabel!.text = collectionsAndArrays.name
        cell.detailTextLabel!.text = collectionsAndArrays.created_at

        return cell
    }


    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplete method implementation.
        // Return the number of rows in the section.
        var numberOfCollections: Int = self.items.count

        return numberOfCollections

    }


}}

1 个答案:

答案 0 :(得分:2)

缺少括号,必须覆盖didReceiveMemoryWarning。以下是修订后的代码:

class ImagesTabViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    var collectionInfo: NSArray = DataManager.getUserCollections()

    var items: NSMutableArray = []
    var namesArray: NSMutableArray = []

    override func viewDidLoad() {
        super.viewDidLoad()

        APIManager().getData() { completed in
            dispatch_async(dispatch_get_main_queue(), { () -> Void in
                if completed {
                    self.collectionInfo = DataManager.getUserCollections()
                    var collectionNames: AnyObject = self.collectionInfo[3]
                    println(collectionNames)
                    self.items = NSMutableArray(array: self.collectionInfo)
                } else {
                    //do something else
                }
            })
            // Do any additional setup after loading the view.
        }
    } // <- Was missing!

    // Override!
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

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


    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        var collectionsAndArrays = PSCollection()
        let cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")

        // Configure the cell...

        collectionsAndArrays = self.items[indexPath.row] as! PSCollection
        cell.textLabel!.text = collectionsAndArrays.name
        cell.detailTextLabel!.text = collectionsAndArrays.created_at

        return cell
    }


    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        var numberOfCollections: Int = self.items.count
        return numberOfCollections
    }
}