美文网首页
ios router原创小记

ios router原创小记

作者: 过江鸟iOSer | 来源:发表于2019-08-23 11:23 被阅读0次

    整体思路就是写一个 “UIResponder”的分类(category)不基于delegate,block,kvc,kvo

    代码背景:controller中 addSubview 一个view 点击view时,将事件及参数专递给controller中(不同的事件要加以区分)

    直接上代码

    //category.m中
    - (void)routerEventWithName:(NSString *)eventName userInfo:(NSDictionary *)userInfo{
        NSLog(@"我走了分类方法");
        [[self nextResponder] routerEventWithName:eventName userInfo:userInfo];
    }
    //并在.h中声明
    
    //view.m中
    -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
    {
        NSLog(@"我点击了方法");
        [[self nextResponder] routerEventWithName:@"push" userInfo:nil];
    }
    
    //controller.m中
    - (void)viewDidLoad {
        [super viewDidLoad];
    
        [self.view addSubview:({
            self.routerView = [TestView new];
            self.routerView.frame = CGRectMake(100, 100, 100, 100);
            self.routerView;
        })];
        
        
    }
    
    - (void)routerEventWithName:(NSString *)eventName userInfo:(NSDictionary *)userInfo{
        NSLog(@"控制器响应了");
        if([eventName isEqualToString:@"push"])
        {
            NSLog(@"do what you want!");
        }
    }
    

    最后控制台可以看到效果


    屏幕快照 2019-08-23 上午11.20.42.png

    目前应该有很多团队在用这种方式开发了,如果其中有什么坑点,或者相较于常规传值方式的优缺点的想法,希望多多评论提出来,感激不尽。

    相关文章

      网友评论

          本文标题:ios router原创小记

          本文链接:https://www.haomeiwen.com/subject/wuezsctx.html