我在import语句之后创建全局变量:
var kontenid = ""
var judulkonten = ""
然后我通过tableview和prepareForSegue发送到FreeTiles视图控制器(其他视图控制器):
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
//let cell = tableView.dequeueReusableCellWithIdentifier(reuseContentFreeIdentifier, forIndexPath: indexPath) as! FreeTableViewCell
var contentku = contents[indexPath.row] as ContentModel
kontenid = contentku.id
judulkonten = contentku.title
performSegueWithIdentifier("lemparkonten", sender: self)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
if (segue.identifier == "lemparkonten") {
var svc = segue.destinationViewController as! FreeTiles;
svc.idcontent = kontenid
svc.namacontent = judulkonten
}
}
在FreeTiles视图控制器上,我把它放在了类中:
var idcontent :String!
var namacontent :String!
但是当我在FreeTiles视图控制器上打印时:
println("konten id nya:\(idcontent)")
println("judul nya:\(namacontent)")
我有两份idcontent和两份namacontent记录,第一份是空的,第二份是正确的idcontent和namacontent。
如何避免在两个视图控制器之间发送变量时得到两个变量结果?为每个threw变量只得到一个结果的正确代码是什么?
编辑: 它似乎缓存在xcode日志上,因为当我更改println时,它只显示一个日志。
if idcontent.isEmpty && namacontent.isEmpty {
//println("Nothing to see here")
}else{
var content_id = idcontent
var content_name = namacontent
println("content_id:\(content_id)")
println("content_name:\(content_name)")
}
因此,我在FreeTiles(第二个视图控制器)上进行过滤以获取填充变量。
问候。
答案 0 :(得分:0)
首先,如果要声明全局变量,则需要指定它的范围。让我们说:
public var kontenid = ""
public var judulkonten = ""
此外,一旦声明了全局变量,您就可以从任何地方访问它,它也会反映您何时更改该值。
因此,在为变量赋值
之后func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
//let cell = tableView.dequeueReusableCellWithIdentifier(reuseContentFreeIdentifier, forIndexPath: indexPath) as! FreeTableViewCell
var contentku = contents[indexPath.row] as ContentModel
kontenid = contentku.id
judulkonten = contentku.title
performSegueWithIdentifier("lemparkonten", sender: self)
}
在您的准备方法中,您不需要分配值:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
if (segue.identifier == "lemparkonten") {
var svc = segue.destinationViewController as! FreeTiles;
}
}
现在您可以在任何地方访问上述全局变量,以便您可以直接在其他类中使用它:
if idcontent.isEmpty && namacontent.isEmpty {
//println("Nothing to see here")
}else{
var content_id = kontenid
var content_name = judulkonten
println("content_id:\(content_id)")
println("content_name:\(content_name)")
}
}
如果您对此代码有任何疑问,请与我们联系。
答案 1 :(得分:0)
您使用代码打印变量2次:
override func viewDidLoad() {
super.viewDidLoad()
println("konten id nya:(idcontent)") // first
println("judul nya:(namacontent)") // second
if idcontent.isEmpty && namacontent.isEmpty { //println("Nothing to see here")
} else {
var content_id = idcontent var content_name = namacontent
println("content_id: (content_id)") // 3
println("content_name:(content_name)") // 4
}}
您的代码似乎可以通过segue发送数据。否则你可以在这里查看我的答案: