Uza*_*air 10 ios uistoryboardsegue swift
我在" 使用标识符执行segue "和" 为segue做准备 " 之间非常混淆......这些功能的作用以及它们如何工作?
Dha*_*esh 10
prepareForSegue准备在视图控制器之间传递的数据,其中带有标识符的performSegue实际上允许切换发生.
来自Apple文档:
Swift2:
performSegueWithIdentifier(_:sender:)
Swift3:
performSegue(withIdentifier: String, sender: Any?)
应用程序通常不需要以编程方式触发segues.如果需要,您可以调用此方法来触发无法在故事板文件中表达的操作的segue,例如不同故事板中场景之间的过渡.
通常,segue由用户操作触发,例如单击按钮.在Interface Builder中,配置对象(例如嵌入在视图控制器视图层次结构中的控件)以触发segue.
Swift2:
prepareForSegue(_:sender:)
Swift3:
prepare(for: NSStoryboardSegue, sender: Any?)
此方法的默认实现不执行任何操作; 您可以根据segue的上下文覆盖它以将相关数据传递给新视图控制器或窗口控制器.segue对象描述了转换,并包括对segue中涉及的两个控制器的引用.
可以从多个源触发Segues,因此使用segue和sender参数中的信息可以消除应用中不同逻辑路径之间的歧义.例如,如果segue源自表视图,则sender参数将标识用户单击的单元格.您可以使用该信息在目标视图控制器上设置数据.
performSegueWithIdentifier
只是告诉viewController你想要什么segue到segue.您可以在Interface Builder中提供segue名称.
[self performSegueWithIdentifier:@"GoToAnotherViewController" sender:self];
Run Code Online (Sandbox Code Playgroud)
你可能有一个带有几个segue的ViewController,或者你可能有一些来自当前ViewController的东西,当你离开时,destinationVC"需要知道",所以你要使用prepareForSegue.
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Make sure your segue name in storyboard is the same as this line
if ([[segue identifier] isEqualToString:@"GoToAnotherViewController"])
{
// Get reference to the destination view controller
YourViewController *vc = [segue destinationViewController];
// Pass any objects to the view controller here, like...
[vc setMyObjectHere:object];
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6951 次 |
最近记录: |