Swift标签不显示所选单元格所说的内容

时间:2015-04-21 00:28:10

标签: uitableview swift uilabel

我有一个tableview,其中填充了来自JSON数组的信息。我想让每个选定的单元格成为一个viewController,在那个viewController中我有一个标签,应该显示所选单元格所说的内容。例如,如果我的单元格显示加利福尼亚,当我点击单元格时,它将打开我的viewController,标签会说加利福尼亚。

看起来很简单,我在成功之前已经完成了这个,但是这次我使用JSON来填充我的tableView并且我猜测我做错了什么。使用下面发布的代码,当我点击一个单元格时,titleLabel甚至不显示。 (我的tableView文件和DetailsViewController文件发布在下面,我使用的任何其他swift文件都可以在我之前的问题中找到populating Tableview with a function that uses SwiftyJSON

import UIKit

class EarthTableViewController: UITableViewController {
    var info = [AppModel]()



    func getEarthquakeInfo(completion: (results : NSArray?) ->Void ){

        DataManager.getEarthquakeDataFromFileWithSuccess {
            (data) -> Void in

                let json = JSON(data: data)


                if let JsonArray =  json.array {

                    for appDict in JsonArray {
                        var ids: String? = appDict["id"].stringValue
                        var title: String? = appDict["title"].stringValue
                        var time: String? = appDict["time"].stringValue
                        var information = AppModel(idEarth: ids, title: title, time: time)

                        self.info.append(information)
                        completion(results: self.info)
                    }


            }

        }



    }


    override func viewDidLoad() {
        super.viewDidLoad()
        getEarthquakeInfo { (info) in

            self.tableView.reloadData()

        }
    }



    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) ->   UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath) as UITableViewCell
        let infoArray = self.info


        cell.textLabel!.text = self.info[indexPath.row].title



        return cell



    }

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {

        if segue.identifier == "SEGUE" {
            let vc = segue.destinationViewController as DetailsViewController
            let cell = (sender as UITableViewCell)

             let title = cell.textLabel!.text

            vc.titleData = title


        }





    }







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

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplete method implementation.
        // Return the number of rows in the section.
        return info.count
    }

}

我的DetailsViewController文件:

import UIKit

class DetailsViewController: UIViewController {


    @IBOutlet weak var titleLabel: UILabel!
    @IBOutlet weak var idLabel: UILabel!

    @IBOutlet weak var timeLabel: UILabel!
    var titleData: String!
    var idData: String!
    var timeData: String!

    override func viewDidLoad() {
        super.viewDidLoad()
        var earthInfo = EarthTableViewController()
        var getEarthInfo: () = earthInfo.getEarthquakeInfo { (info) in
            println("\(info)")



        }


        titleLabel.text = titleData
        idLabel.text = idData
       timeLabel.text = timeData
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }



}

0 个答案:

没有答案