我正在开发一款应用并探索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
单元格后加载。
答案 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)")