Swift 获取view所在的ViewController

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #1e9421; background-color: #ffffff }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #c42275; background-color: #ffffff }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #000000; background-color: #ffffff }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #000000; background-color: #ffffff; min-height: 20.0px }
span.s1 { color: #000000 }
span.s2 { color: #6122ae }
span.s3 { color: #c42275 }
span.s4 { color: #3e1e81 }
span.s5 { color: #703daa }

//uiview的扩展

extension UIView{

func getFirstViewController()->UIViewController?{

for view in sequence(first: self.superview, next: {$0?.superview}){

if let responder = view?.next{

if responder.isKind(of: UIViewController.self){

return responder as? UIViewController

}

}

}

return nil

}

}

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #1e9421; background-color: #ffffff }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #000000; background-color: #ffffff }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #294c50; background-color: #ffffff }
span.s1 { color: #000000 }
span.s2 { color: #c42275 }
span.s3 { color: #6122ae }
span.s4 { color: #703daa }
span.s5 { color: #0435ff }
span.s6 { color: #3e1e81 }

   

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #000000; background-color: #ffffff }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #3e1e81; background-color: #ffffff }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #000000; background-color: #ffffff; min-height: 20.0px }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #1e9421; background-color: #ffffff }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #294c50; background-color: #ffffff }
span.s1 { color: #c42275 }
span.s2 { color: #000000 }
span.s3 { color: #1e9421 }
span.s4 { color: #6122ae }
span.s5 { color: #703daa }
span.s6 { color: #0435ff }
span.s7 { color: #3e1e81 }

override func viewDidLoad() {

super.viewDidLoad()

//调用

let mView = UIView(frame: CGRect(origin: CGPoint.zero, size:CGSize(width: 100, height: 100)))

mView.backgroundColor = UIColor.red

self.view.addSubview(mView)

//获取mView的ViewController

let vc = mView.getFirstViewController()

}

原文地址:https://www.cnblogs.com/chenxiaopao/p/9108022.html

时间: 2024-10-08 04:02:36

Swift 获取view所在的ViewController的相关文章

iOS 获取UIView所在的VIewController

写程序的时候我们经常要封装代码,当你封装了一个UIView的子类里需要调用所在ViewController的方法用如下代码调取所在的VIewController #pragma mark - 获取所在ViewController - (UIViewController *)superViewController:(id)sender { for (UIView* next = [self superview]; next; next = next.superview) { UIResponder

【iOS解决思路】得到某个view所在的ViewController

在一个tableViewCell中有个btn,如何得到它所在的viewcontroller,以便于push出新的viewController? 我的思路是传值,但网上有下面这种方法,分享. 跟得到某个视图上的子视图思想类似,但之前没有接触过 UIResponder,所以没有想到. - (UIViewController *)viewController { for (UIView* next = [self superview]; next; next = next.superview) { U

iOS 之 获取View所在控制器

1. UIResponder UIViewController *uvc; UIResponder* nextResponder = [self.superview.superview.superview nextResponder]; if ([nextResponder isKindOfClass:[UIViewController class]]) { uvc = (UIViewController*)nextResponder; } 2.获取当前屏幕中present出来的viewcont

获取View所在的控制器

- (UIViewController *)ViewController { id nextResponder = [self nextResponder]; while (nextResponder != nil) { if ([nextResponder isKindOfClass:[UIViewController class]]) { UIViewController *vc = (UIViewController *)nextResponder; return vc; } nextRe

一点一点学写Makefile(5)-获取文件所在路径

我们在开发一套代码时,应该保证工程放到任何一个目录中均可以编译成功,但是有时候链接库的时候会造成编译错误,本次就会告诉大家如何动态的获得工程所在的绝对路径 代码下载目录 选择Makefile-5 [sql] view plain copy //makefile CROSS = CC = $(CROSS)gcc CXX = $(CROSS)g++ DEBUG = CFLAGS = $(DEBUG) -Wall -c MV = mv -f RM = rm -rf LN = ln -sf TOP_PA

NSClassFromString 和 遍历UIView获取她所在的UIViewController的tips

一.NSClassFromString是NSObjCRuntime.h的方法 FOUNDATION_EXPORT Class __nullable NSClassFromString(NSString *aClassName); Description:Obtains a class by name.The name of a class.Parameters:aClassName The name of a classReturns:The class object named by aCla

欧美斯项目签到功能,实时获取当前所在位置的经纬度

由于欧美斯项目需要签到功能,因此需要给后台传一个当前位置的经纬度,以下是获取经纬度的方法 1>导入CoreLocation.frameWork 2>引入头文件,并遵循协议 #import <CoreLocation/CoreLocation.h> <CLLocationManagerDelegate> 3>代码 @interface YYAboutUsViewController ()<UIWebViewDelegate,CLLocationManagerD

如何在子视图中获取父视图的ViewController?//模态推出

子view添加到有controller的父view时,在点击子view中的什么东西时,如果要调用父view的controller导航push到一个新viewController,那么直接用下面的代码就可以了(本人也遇到这个问题,以下代码在IOS7和IOS6.1上都亲测通过) //获取view的controller - (UIViewController *)viewController {     for (UIView* next = [self superview]; next; next 

在渲染前获取 View 的宽高

在渲染前获取 View 的宽高 这是一个比较有意义的问题,或者说有难度的问题,问题的背景为:有时候我们需要在view渲染前去获取其宽高,典型的情形是,我们想在onCreate.onStart.onResume中去获取view的宽高.如果大家尝试过,会发现,这个时候view还没有measure好,宽高都为0,那到底该怎么做才能正确获取其宽高呢,下面给出三种方法(还有其他方法, 比如监听器回调等): Activity/View#onWindowFocusChanged :这个方法表明,view已经初