美文网首页
视图如何调用本视图的控制器

视图如何调用本视图的控制器

作者: 梦醒繁华 | 来源:发表于2016-07-22 20:44 被阅读75次

    视图如何调用本视图的控制器

    有以下几种方法

    • 第一种方法在这个自定义的UIVIew设置一个delegate,指向 A,然后在按钮事件使用delegate让A执行方法跳转B
      在这个自定义的UIVIew—>B
      B所载的界面—>A
      在A里面定义一个算法如下:
    -(void)changeInterface:(NSString *)interfacename{  
           Class  class = NSClassFromString(interfacename); 
           UIViewController *con =[[class alloc] init]; 
           if (con == self) { 
           return ; 
            } 
            [self.navigationController pushViewController:con animated:YES];
    }
    

    在点击事件发生的同时传递一个指针过去,例如:

    pop.delegate = self;
    

    在B视图中实现跳转

    [_delegate changeInterface:@"ClassifyViewController"];
    
    • 第二种方法
      也可以发通知给UIViewController A去跳转到B

    • 第三种方法
      建立一个UIView的扩展
      UIView+Extent.h文件

    #import <UIKit/UIKit.h>                                     
     @interface UIView (Extent)
    -(UIViewController *)viewController;
    @end
    

    UIView+Extent.h文件

    #import "UIView+Extent.h"
    @implementation UIView (Extent)
    -(UIViewController*)viewController {
           for (UIView* next = [self superview]; next;next = next.superview) { 
           UIResponder* nextResponder = [next nextResponder]; 
           if ([nextResponder isKindOfClass:[UIViewController class]]) { 
           return (UIViewController*)nextResponder; 
    } 
    }
            return nil;
    }
    @end
    
    • 第四种方法
    //取出根视图控制器
    UITabBarController *tabBarVc = (UITabBarController *)[UIApplication sharedApplication].keyWindow.rootViewController;
    //取出当前选中的导航控制器
    UINavigationController *Nav = [tabBarVc selectedViewController];
    [Nav pushViewController:topDetailView animated:YES];
    

    相关文章

      网友评论

          本文标题:视图如何调用本视图的控制器

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