SegueingInfo 2.1.1

SegueingInfo 2.1.1

测试已测试
语言语言 SwiftSwift
许可协议 MIT
发布最后发布2016年9月
SPM支持SPM

Ian Grossberg维护。



  • Ian G

SegueingInfo

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>

设置完成后,要传递信息,只需调用适当的performSegueWithIdentifierpopViewController等函数,并将信息传递到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被调用时使用它,并且在它尚未被调用时存储它。

注意:有计划提供更可靠的解决方案

最后有两个选项

  1. 您可以将源视图控制器UIViewController的父类修改为SegueingInfoViewController,以自动在StoryboardSegue上转发您的信息。

  2. UIViewController(SegueingInfo)类别提供了用来手动转发信息到目标UIViewController的类选择器prepareDestinationViewControllerForSegue。通常您会从这个UIViewControllerprepareForSegue中调用它

    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,请创建一个问题并标记为featurebug(请在创建问题之前查看问题是否存在!)。或者建议一个pull请求!