将DataViewController传递给ViewController

时间:2015-12-28 10:28:54

标签: ios swift

我正在开发一款应用并探索SWIFT语言。我给出了这一点(检查下面的代码),我被卡住了。来自大家的帮助将非常感谢。

我有TableViewController显示来自JSON的城市值,并且相同的数据将显示在DetailsViewController上作为详细信息。 我通过字典传递这些json数据。 我被卡住的地方! 来自dict(tableviewcontroller中的dictinary 1)的数据被传递给dict2(detailsviewcontroller中的字典2),但它没有显示在detailsviewcontroller的标签上。看看代码。

    TableViewController 

      override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

      print("You selected cell #\(indexPath.row)!")

        let d = self.tempArray[indexPath.row]
        self.dict ["fcodeName"] = d.fcodename
        self.dict ["toponymName"] = d.toponyname
        self.dict ["countrycode"] = d.countrycode
        self.dict ["fcl"] = d.fcl
        self.dict ["fclName"] = d.fclname
        self.dict ["name"] = d.name
        self.dict ["wikipedia"] = d.wikipedia
        self.dict ["lng"] = d.lng
        self.dict ["fcode"] = d.fcode
        self.dict ["geonameId"] = d.geonameid
        self.dict ["lat"] = d.lat
        self.dict ["population"] = d.population
        print("Dictionary \(self.dict)")


    }

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

        if (segue.identifier == "show") {
            print("Dictionary \(self.dict)")

            let DetailsView = segue.destinationViewController as! DetailsViewController
            DetailsView.dict2 = self.dict



        }

    }

} 

DetailsViewController

    import UIKit

    class DetailsViewController: UIViewController {

    var dict2 = [String : AnyObject]()

    @IBOutlet var lblName: UILabel!
    @IBOutlet var lblFcodeName: UILabel! 

    override func viewDidLoad() {
        super.viewDidLoad()
    self.lblTopName.text = self.dict2["toponymName"]?.stringValue
        self.lblFcodeName.text = self.dict2["fcodeName"]?.stringValue
        print("Dictionary 2 \(self.dict2)")
    }

P.S。在Console中我可以看到Dictinary 2最初为空并在第一个字典加载第二个TableViewController单元格后加载。

1 个答案:

答案 0 :(得分:0)

UPD: @IBOutlet var lblName: UILabel!self.lblTopName.text个不同的变量。

另外添加:

self.performSegueWithIdentifier("show", sender: tableView)
tableView.deselectRowAtIndexPath(indexPath, animated: true)

self.dict ["population"] = d.population
print("Dictionary \(self.dict)")