您的位置:首页 > 移动开发 > Swift

【swift学习笔记】一.页面转跳的条件判断和传值

2016-05-25 09:54 357 查看
  在转跳页面之前我们可能会判断一下是否有输入正确的数据,如下图所示,如果没有数据输入则弹出提示,不进行转跳。



一:页面转跳

1.第一个页面的上放上一个Label一个textfield和一个按钮

2.在第二个窗体上放两个label和一个按钮,并指定一个ViewController

3.创建Segue连接两个窗体,打开模式选择modal,并给Segue命名为"openView"



3.页面1 中创建输入文本框的引用和按钮的点击Action

在Action里判断文本是否有数据,如果没有则弹出提示,如果有则打开新窗体

@IBAction func passNameToView(sender: AnyObject) {
guard let text = teName.text where !text.isEmpty else {

let title = "Warning"
let message = "please enter name!"
let okText = "Ok"

let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert)
let okButton = UIAlertAction(title: okText, style: .Cancel, handler: nil)
alert.addAction(okButton)
presentViewController(alert, animated: true, completion: nil)

return;
}

self.performSegueWithIdentifier("openView", sender: self)

// or  if let text = teName.text where !text.isEmpty
}


这样就可以打开新窗体了。

4.从新窗体返回原窗体

页面2中的按钮建立一个Action代码如下

@IBAction func backToParent(sender: AnyObject) {
self.dismissViewControllerAnimated(true, completion: nil)
}


二.页面传值

1.在页面2中声明一个字符串变量用于接收传过来的信息和一个lable的引用,在加载完窗体后显示在label中

@IBOutlet weak var receiveName: UILabel!

var receivedStr: String = ""
override func viewDidLoad() {
super.viewDidLoad()

// Do any additional setup after loading the view.

receiveName.text = receivedStr
}


2.页面1 重写prepareForSegue方法 把值输入的值传递给页面2

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "openView" {
if let secondView = segue.destinationViewController as? SecondViewController {
secondView.receivedStr = teName.text!
}
}
}


ok整个过程完毕。

完整代码:判断条件页面转跳.zip
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: