我在问题上挣扎了几个小时。基本上,我有一个简单的Swift应用程序。它是这样的。在我的第一个视图控制器中,我有3个文本字段,我想用信息和一个"下一个"按钮填充它们。
按"下一个"按钮将把我发送到一个新的UiviewController,在那里我将拥有一个" Back"按钮。按下后面按钮后,我将带有3个文本字段的第一页。
我想要的是:如果我通过信息完成文本字段,请按下一步然后返回,我希望文本字段充满该信息。
我设法用按钮在视图之间移动,但我无法保存信息。你能给我一点帮助吗?
@IBOutlet weak var txtb1: UITextField!
@IBOutlet weak var txtb2: UITextField!
@IBOutlet weak var txtb3: UITextField!
@IBAction func next(sender: AnyObject) {
text1 = self.txtb1.text!
text2 = self.txtb2.text!
text3 = self.txtb3.text! }
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
if (!text1)
{
txtb1.text = text1
}
}
如果要将变量传递给不同的视图,则必须在将 preparforsegue 函数中使用,然后才能将变量转移到该视图控制器中。
。这允许视图控制器访问变量。
Override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!)
{
if segue.identifier == "segue_name"
{
let theDestination = segue.destinationViewController as! newViewController
theDestination.variable = "testing"
theDestination.variable2 = "testing2"
}
}
然后在第二视图控制器内部,您必须声明变量和变量2,如下所示:
var variable:String!
var variable2:String!
然后,这些将能够在 viewDidload 方法的第二视图控制器中使用。
好。我设法解决了一些问题,该按钮没有相应地链接,因此该功能没有执行。这是代码:
var text1 = ""
@IBOutlet weak var txtb1: UITextField!
@IBAction func next(sender: AnyObject) {
text1 = self.txtb1.text! // text1 = "I am taking value"
}
// when i press the back button
override func viewDidLoad() {
super.viewDidLoad()
if (!numarInmatriculare.isEmpty)
{
txtb1.text = text1 //here text1 = Null. the value is not saved
}
}
我希望将值保存并在文本字段中显示。
我还尝试使用静态varibiles,但我是错误的。
static var numar:String = ""
numar = text1
//static member 'numar'cannot be used on instance of type 'viewcontroller'
您无需为这种情况做任何事情,一旦提交了文本字段,您单击下一个按钮,您在下面写了一些代码
text1 = self.txtb1.text!
text2 = self.txtb2.text!
text3 = self.txtb3.text!
请首先删除代码,一旦填充了提交的文本,它会自动保留,单击下一个按钮后,然后自动返回后,它将保留,当您当前视图弹出时,只有数据才能备份。