Jas*_*onP 6 iphone storyboard ios segue swift
我想知道标题中的函数如何工作以及sender参数.
让我们说单击按钮会调用performSegue方法,这也会调用prepareSegue方法吗?是在performSegue方法之前调用prepareSegue方法但是在按下按钮之后?
另外,两个函数中的"sender"参数是否相关联?如果我在performSegue方法中传入一个字符串作为发送者,那么是否会转移到prepareSegue方法中的sender参数?换句话说,如果我将performSegue方法中的sender参数设置为"Hi world",那么prepareSegue方法中的sender参数是否也是相同的字符串?
谢谢
Pau*_*w11 22
实际上,有两种方法可以触发segue.第一种是通过Interface Builder中的UI元素执行操作,第二种是performSegueWithIdentifier:sender:在代码中使用.我说'有效',因为在幕后,当从故事板加载场景时,配置一个最终调用的动作处理程序performSegueWithIdentifier:sender:
当performSegueWithIdentifier:sender:被调用时,SEGUE对象被传递到您的视图控制器的prepareForSegue:sender:功能.
在通过对UI元素的动作启动segue的情况下,发送者将是该UI元素(即,如果它是动作连接,UIButton那么sender将是UIButton实例).
如果segue是由您的代码调用启动的performSegueWithIdentifier:sender:那么sender将是您传递的任何对象sender.这可能是你的视图控制器,按钮,数组,任何东西.所以,是的,如果你传递的"Hello World",以performSegueWithIdentifier:sender:作为sender值,那么这将是sender在prepareForSegue:sender:
在操作顺序方面:
performSegueWithIdentifier:sender 由您的代码或UI元素上的操作调用shouldPerformSegueWithIdentifier:sender:则调用此函数.如果此函数返回,false则取消segueprepareForSegue:sender:则调用此函数.prepareForSegue:sender:返回,segue就完成了.The*_*Man 21
performSegue方法调用segue从一个视图到另一个视图.在segue实际发生之前,调用prepareForSegue方法,如果你想在视图之间传递数据,你可以在那里进行.
performSegue方法不接受您要发送的参数.它只用于首先调用segue.您要发送的任何数据都将通过prepareForSegue完成.
这是一个例子.
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
performSegueWithIdentifier("test", sender: self)
//You can set the identifier in the storyboard, by clicking on the segue
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "test"{
var vc = segue.destinationViewController as! RandomViewController
vc.data = "Data you want to pass"
//Data has to be a variable name in your RandomViewController
}
}
Run Code Online (Sandbox Code Playgroud)
如果这有帮助,请告诉我!
The_Curry_Man的回答对我有用.这是他的Swift 3代码的更新.
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
performSegue(withIdentifier: "test", sender: self)
//You can set the identifier in the storyboard, by clicking on the segue
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "test"{
var vc = segue.destinationViewController as! RandomViewController
vc.data = "Data you want to pass"
//Data has to be a variable name in your RandomViewController
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31215 次 |
| 最近记录: |