KNMSegueRouting 0.3.0

KNMSegueRouting 0.3.0

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最新发布2015年1月

Markus Gasser 维护。



  • 作者:
  • Markus Gasser

Segue Routing

一个关于 UIViewController 的分类,它会自动将 -prepareForSegue:sender: 调用路由到基于 segue 标识符的显式方法。

所以,您不需要这样做

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"Show Settings"]) {
        // prepare for 'Show Settings' segue
    } else if ([segue.identifier isEqualToString:@"Show User Info"]) {
        // prepare for 'Show User Info' segue
    } else if ([segue.identifier isEqualToString:@"Show About"]) {
        // prepare for 'Show About' segue
    }
}

您可以这样写

- (void)prepareForShowSettingsSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // prepare for 'Show Settings' segue
}

- (void)prepareForShowUserInfoSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // prepare for 'Show User Info' segue
}

- (void)prepareForShowAboutSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // prepare for 'Show About' segue
}

将目标控制器连接到调用者

有一个快捷方式可以将目标视图控制器作为属性注入到调用控制器中。这对于嵌入式 segue 特别有用,因为您不能有一个指向您的子视图控制器的 outlet。

为此,您将 segue 的标识符设置为以下格式: @connect(<#myProperty#>)。例如,具有标识符 @connect(someChildViewController) 的 segue 将其 destinationViewController 保存到调用视图控制器的 someChildViewController 属性中。

使用 Blocks 配置Segue

您可以在进行 segue 时提供配置块。

- (IBAction)showSettings:(id)sender {
    [self knm_performSegueWithIdentifier:@"Show Settings" sender:sender configureUsingBlock:(UIStoryboardSegue *segue) {
        // prepare for 'Show Settings' segue
    }];
}

安装

当使用 Cocoapods 时,将以下内容添加到您的 Podfile

pod 'KNMSegueRouting', '~> 0.3'

然后,在您的应用程序目标的构建设置中,在 Additional Linker Flags 下添加 -ObjC 以识别分类。

用途

Segue Routing

在您的视图控制器中,只需添加以下模式的方法来处理您的 segue

- (void)prepareFor<SymbolifiedSegueIdentifier>Segue:(UIStoryboardSegue *)segue sender:(id)sender {
    // handle your segue here
}

表示 segue 名称的规则如下

  1. 根据任何不允许在符号中使用的字符拆分字符串。允许的字符是 A-Za-z0-9_(以任何顺序和组合)
  2. 将所有结果部分的第一个字符大写
  3. 将这些部分连接起来

因此,具有标识符 some overly-complicated identifier_name 2 的 segue 成为 SomeOverlyComplicatedIdentifier_name2,并将其路由到 -prepareForSomeOverlyComplicatedIdentifier_name2Segue:sender:

示例

处理具有标识符 Present Login 的 segue

- (void)prepareForPresentLoginSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // prepare for 'Present Login'
}

处理具有标识符 push-user-page 的 segue

- (void)prepareForPushUserPageSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // prepare for 'push-user-page'
}

Segue Block Configuration

要配置要执行的 segue,请使用 -knm_performSegueWithIdentifier:sender:configureUsingBlock:

- (IBAction)showSettings:(id)sender {
    [self knm_performSegueWithIdentifier:@"Show Settings" sender:sender configureUsingBlock:(UIStoryboardSegue *segue) {
        // prepare for 'Show Settings' segue
    }];
}

配置块在调用任何 -perform<MyIdentifier>Segue:sender: 方法之前执行。

-prepareForSegue:sender: 中的自定义逻辑

此类别覆盖了 -prepareForSegue:sender: 以实现路由。如果您出于某种原因需要在您的视图控制器中覆盖此方法但仍需要路由行为,您需要确保调用 [super prepareForSegue:segue sender:sender]