SegueingInfo通过在iOS和OSX UIStoryboard中的StoryboardSegue视图控制器之间传递数据的简单方法,提供了一个正式的、声明性的接口,以强制执行模块化和弱依赖性。
SegueingInfo只需最少代码即可启动和运行,使用performSegueWithIdentifier(identifier:, sender:)
函数调用(ObjC中的performSegueWithIdentifier:sender:
选择器)中的sender
参数。
SegueingInfo可以通过Carthage获取,要安装,只需将以下内容添加到您的Cartfile
github "Adorkable/SegueingInfo"
SegueingInfo也通过Cocoapods提供,要安装,只需将以下行添加到您的PodFile
pod "SegueingInfo"
或者您可以克隆github仓库。
安装完成后,您首先需要导入库
Swift
import SegueingInfo
ObjC
#import <SegueingInfo/SeguingInfo.h>
设置完成后,要传递信息,只需调用适当的performSegueWithIdentifier
、popViewController
等函数,并将信息传递到sender
参数中。
Swift
...
self.performSegueWithIdentifier("Next", sender: someObjectWithInfo)
...
ObjC
...
[self performSegueWithIdentifier:"Next" sender:someObjectWithInfo];
...
接下来,您的目标UIViewController子类必须符合SegueingInfoDestination
协议,它将通过该选择器接收到您传递的信息
Swift
func destinationPrepareForSegue(segue : UIStoryboardSegue?, info: AnyObject) {
...
}
ObjC
- (void)destinationPrepareForSegue:(UIStoryboardSegue *)segue info:(id)info
{
...
}
请注意:施工目的地视图控制器接收信息的时间相对于viewDidLoad
是不可保证的。如果您计划使用传递的信息来填充您的界面,请确保在viewDidLoad
被调用时使用它,并且在它尚未被调用时存储它。
注意:有计划提供更可靠的解决方案
最后有两个选项
您可以将源视图控制器UIViewController的父类修改为SegueingInfoViewController
,以自动在StoryboardSegue上转发您的信息。
UIViewController(SegueingInfo)类别提供了用来手动转发信息到目标UIViewController的类选择器prepareDestinationViewControllerForSegue
。通常您会从这个UIViewController的prepareForSegue
中调用它
Swift
override func prepareForSegue(segue : UIStoryboardSegue, sender : AnyObject?) {
super.prepareForSegue(segue, sender: sender)
self.prepareDestinationViewControlleForSegue(segue, sender: sender)
}
ObjC
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
[super prepareForSegue:segue sender:sender];
[self prepareDestinationViewControllerForSegue:segue withInfo:sender];
}
如果您有任何想法、建议或要报告的bug,请创建一个问题并标记为feature或bug(请在创建问题之前查看问题是否存在!)。或者建议一个pull请求!