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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,229评论 4 61
  • 走起,你的潮流生活发现助手 ◆产品简介走起APP是一个吃喝玩乐一站式服务平台,在公司正式成立前,团队运营着上海最大...
    piegroups阅读 2,229评论 0 1
  • 《零秒工作:速度解决一切的麦肯锡工作术》 ,作者赤羽雄二,另著有畅销书《零秒思考:像麦肯锡精英一样思考》。本书从提...
    wonital2007阅读 579评论 0 3
  • 下午小何来玩,说起夫妻投缘,这个事儿。。。。也是可遇而不可求啊。 我跟老崔是没法深度聊天的,和他讨论哲学啥的,...
    木欣欣以向荣之墨白阅读 138评论 0 0
  • 蚊子老是嗡嗡嗡作响 像战斗机旋转舞一圈 又灰溜溜叹气地飞走 有时候我的板实身体 只要能露肉肉的地方 都被蚊子循环亲...
    赛腾烟阅读 2,137评论 20 12