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

好吧,这是之前写的一些东西,在印象笔记中做了记录,现在转到简书中。实现了在 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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容