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

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

有以下几种方法

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

推荐阅读更多精彩内容

  • 前言的前言 唐巧前辈在微信公众号「iOSDevTips」以及其博客上推送了我的文章后,我的 Github 各项指标...
    VincentHK阅读 5,431评论 3 44
  • *7月8日上午 N:Block :跟一个函数块差不多,会对里面所有的内容的引用计数+1,想要解决就用__block...
    炙冰阅读 2,547评论 1 14
  • 1.自定义控件 a.继承某个控件 b.重写initWithFrame方法可以设置一些它的属性 c.在layouts...
    圍繞的城阅读 3,469评论 2 4
  • 如果贫穷,无为的人生是我必须经历的! 如果漂泊,流浪注定是我一生要走的路! 我想上天也一定会有对我仁慈的时候。 对...
    印子寻阅读 176评论 0 0
  • 我是在求学时参加学校长跑训练队时学会长跑的。那时每天下午准时在体育老师带领下,全校长跑训练队集合起跑,一跑就是五公...
    冬日暖阳0115阅读 351评论 0 1