美文网首页
在view中获取主控制器,进行界面跳转

在view中获取主控制器,进行界面跳转

作者: Ice丶泽 | 来源:发表于2017-03-22 11:47 被阅读0次

    好吧,这是之前写的一些东西,在印象笔记中做了记录,现在转到简书中。实现了在 view 中获取控制器并进行界面跳转,写之前没怎么想,写完后才发现这么跳转并不好(ps:控制器的事,view 去做,有点越俎代庖),所以,只当是进行响应者链条的一个demo。

    下面代码实现的效果是,让子 view 接收这些事件后,同时把这些事件继续向上传,会一直传到 UIApplication 为止。而在传的过程中,如果子 view 接收了这些事件,那么事件会自然终止,我们现在可以做的是同时让子 view 接收事件,而且还让事件不终止,并继续向上传。
    #import "myView.h"
    #import "SecondViewController.h"
    
    @interface myView()
    {
        UIViewController *superVC;
    }
    
    @end
    
    @implementation myView
    
    -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
    {
        NSLog(@"被点击了");
        superVC = [self viewController:self];
    
    //    [superVC presentViewController:[SecondViewController new] animated:YES completion:nil];
    
        [superVC.navigationController pushViewController:[SecondViewController new] animated:YES];
    }
    
    //获取响应链中的下一级响应,获取控制器,进行界面跳转
    - (UIViewController *)viewController:(UIView *)view{
        UIResponder *responder = view;
        while ((responder = [responder nextResponder]))
            if ([responder isKindOfClass: [UIViewController class]])
                return (UIViewController *)responder;
    
        return nil;
    }
    

    相关文章

      网友评论

          本文标题:在view中获取主控制器,进行界面跳转

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