view中跳转控制器

通常情况一般都是由view中的触发者(button)之类的事件,触发block,在控制器中处理。但是其实是可以在view中处理控制器跳转的。
在controller不需要回传数据的时候,可以在view中这样写,能够减少控制器中的代码。
大概思路:点击控件始终是加载在控制器上的,不断取superview,取到控制器时,这个控制器就是我们事件的响应者。

/// 处理事件

- (void)tapAction {
    SearchDestinationVC *controller = [[SearchDestinationVC alloc]init];
    controller.hidesBottomBarWhenPushed = YES ;
    //通过找到的控制器进行跳转
    [[self viewController].navigationController pushViewController:controller animated:YES] ;
    
}

找到view的控制器:返回view所加载在的控制器

///  找到view的控制器:返回view所加载在的控制器
- (UIViewController *)viewController {
    for (UIView * superView = [self superview]; superView; superView = superView.superview) {
        UIResponder *nextResponder = [superView nextResponder];
        if ([nextResponder isKindOfClass:[UIViewController class]]) {
            return (UIViewController *)nextResponder;
        }
    }
    return nil;
}

你可能感兴趣的:(view中跳转控制器)