在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 *)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中获取主控制器,进行界面跳转)