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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,682评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,259评论 4 61
  • 何为美人呢,容貌胜出一筹。想来必定是集万千宠爱与一身,幸福安稳的度过一生吧,就算有所波折,也必定比常人幸福。奇...
    ID发芽阅读 206评论 0 1
  • 到最后,拼的全是实力 ...
    木易杨1212阅读 164评论 0 0