在我的一个名为SecondViewController的ViewControllers中,我有以下代码,它允许我在另一个ViewController中更改一个名为ThirdViewController的字符串变量。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var DestViewController : ThirdViewController = segue.destinationViewController as ThirdViewController
if (DestViewController.order1Text == "" ) {
DestViewController.order1Text = " \(pizzaSize) \(crustSelected) crust pizza, sauce on \(sauceChoice) pizza"
} else {
DestViewController.order2Text = " \(pizzaSize) \(crustSelected) crust pizza, sauce on \(sauceChoice) pizza"
}
}
ThirdViewController,包含以下代码,虽然" order1Label"标签更改成功(因为它绑定到字符串变量)当Segue将我带到ThirdViewController时,当我离开ThirdViewController并移动到另一个ViewController时,该标签中的文本消失。如何使文本保留在我从外部ViewController控制的标签中?
import UIKit
class ThirdViewController: UIViewController {
var order1Text = String()
var order2Text = String()
override func viewDidLoad() {
super.viewDidLoad()
order1Label.text = order1Text
order2Label.text = order2Text
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBOutlet weak var order1Label: UILabel!
@IBOutlet weak var order2Label: UILabel!
}
答案 0 :(得分:-1)
使您的IBOutlet强大属性如下所示
@IBOutlet strong var order1Label: UILabel!
<强>原因强>
强大的参考(在大多数情况下您会使用)意味着您想拥有&#34;拥有&#34;您使用此属性/变量引用的对象。只要您使用强引用指向它,编译器就会注意您分配给此属性的任何对象都不会被销毁。只有将属性设置为nil后,对象才会被销毁(除非一个或多个其他对象也拥有对它的强引用)。
相反,如果参考较弱,则表示您不想控制对象的生命周期。您引用弱的对象只会继续存在,因为至少有一个其他对象对它有强烈的引用。一旦不再是这种情况,对象就会被破坏,你的弱属性将自动设置为nil。 iOS中最常见的弱引用用例是: