LKGlobalNavigation一行代码实现页面跳转传值回调等一系列实用功能

LKGlobalNavigation

LKGlobalNavigation可以一行代码实现页面跳转传值回调等一系列实用功能。直接使用URL Schemes进行跳转页面,同时支持传参和回调。支持Pop,Push,Present等各种跳转方式。

1.向LKGlobalNavigation注册当前页面的URL

My little name is URL_MAIN_VC.

+ (void)load {
    [LKGlobalNavigationController registerURLPattern:URL_MAIN_VC viewControllerClass:[self class]];
}

or
IMPLEMENT_LOAD(URL_MAIN_VC)

2 页面跳转方式

通过页面URL就能跳转到对应的页面,解决了页面之间的相互耦合,很好的解决了组件化页面相互引用的问题。

2.1 Push

    [self pushViewControllerWithURLPattern:URL_SECOND_VC];

2.2 Pop

    [self popToViewControllerWithURLPattern:URL_FIRST_VC animated:YES];

2.3 Present

   [self presentNavigationControllerWithURLPattern:URL_FOURTH_VC
                                        withParams:NULL
                                     completeReply:NULL
                                        completion:NULL];

3 页面传参

相对于普通的传参方法(需要在下一级页面创建属性来接收上个页面传下来的数据)来说,一代码就能搞定任何数据在页面之间的传输。

    [self pushViewControllerWithURLPattern:URL_SECOND_VC
                                withParams:@16];

等同于

 SecondViewController *mainView = [[SecondViewController alloc] initWithParams:@16 complete:nil];
 self.navigationController pushViewController:mainView animated:YES];

4 页面发起回调

1.再也不用为通知中心起什么名字而烦恼了;
2.再也不用写那么多代理的胶水代码了。

    if (self.completeBlock) {
        self.completeBlock(@"来自B页面的CallBack");
        }

5 页面接受回调

真正的一行代码实现页面跳转传值回调等一系列实用功能。

[self pushViewControllerWithURLPattern:URL_SECOND_VC
                            withParams:@16
                         completeReply:^(id result) {
                                     if (result) {
                                         UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"PageA Alert"
                                                                                             message:[NSString stringWithFormat:@"收到PageB的回调:%@",result]
                                                                                            delegate:nil
                                                                                   cancelButtonTitle:@"确定"
                                                                                   otherButtonTitles:nil, nil];
                                         [alertView show];
                                     }
                                 }];

6 设置导航栏按钮

设置导航栏左右按钮,并支持多个、文字、图片。

    @weakify(self)
    [self setRightButtonItemWithTitle:@"回调"
                          actionBlock:^{
                              @normalize(self)
                                // Do SomeThing
        
    }];

本文Demo

你可能感兴趣的:(LKGlobalNavigation一行代码实现页面跳转传值回调等一系列实用功能)