gpt4 book ai didi

swift - 当将变量发送到下一个 View Controller swift 时获取双变量

转载 作者:行者123 更新时间:2023-11-30 14:15:55 28 4
gpt4 key购买 nike

我在 import 语句之后创建全局变量:

var kontenid = ""
var judulkonten = ""

然后我通过tableview和prepareForSegue发送到FreeTiles View Controller (其他 View Controller ):

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 View Controller 上,我将其放入类中:

var idcontent :String!
var namacontent :String!

但是当我在 FreeTiles View Controller 上 println 时:

println("konten id nya:\(idcontent)")
println("judul nya:\(namacontent)")

我得到了两个 idcontent 日志和两个 namacontent 日志,第一个是空的,第二个填充了正确的 idcontent 和 namacontent。

在两个 View Controller 之间发送变量时如何避免得到两个抛出的变量结果?对于每个抛出的变量仅获得一个结果的正确代码是什么?

编辑:它看起来像是 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(第二个 View Controller )上进行过滤以获取填充的变量。

问候。

最佳答案

首先,如果您声明全局变量,那么您需要指定它的范围。比方说:

public var kontenid = ""
public var judulkonten = ""

此外,一旦声明了全局变量,您就可以从任何地方访问它,并且它还会反射(reflect)您何时更改值。

所以,在给变量赋值之后

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)
}

在prepareforsegue方法中,您不需要分配值:

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)")
}
}

如果您对此代码有任何疑问,请告诉我。

关于swift - 当将变量发送到下一个 View Controller swift 时获取双变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31177037/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com