为了账号安全,请及时绑定邮箱和手机立即绑定

从UIView到UIViewController?

从UIView到UIViewController?

iOS
30秒到达战场 2019-07-15 09:46:21
从UIView到UIViewController?是否有一个内置的方法可以从UIView向其UIViewController?我知道你可以从UIViewController向其UIView通孔[self view]但我想知道是否有反向引用?
查看完整描述

3 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

使用BRock发布的示例,我对其进行了修改,使其成为UIView的一个类别,而不是UIViewController,并使其具有递归性,以便任何子视图都能够(希望)找到父UIViewController。

@interface UIView (FindUIViewController)- (UIViewController *) firstAvailableUIViewController;- (id) traverseResponderChainForUIViewController;
@end@implementation UIView (FindUIViewController)- (UIViewController *) firstAvailableUIViewController {
    // convenience function for casting and to "mask" the recursive function
    return (UIViewController *)[self traverseResponderChainForUIViewController];}- (id) traverseResponderChainForUIViewController {
    id nextResponder = [self nextResponder];
    if ([nextResponder isKindOfClass:[UIViewController class]]) {
        return nextResponder;
    } else if ([nextResponder isKindOfClass:[UIView class]]) {
        return [nextResponder traverseResponderChainForUIViewController];
    } else {
        return nil;
    }}@end

若要使用此代码,请将其添加到一个新的类文件中(我将其命名为“UIKitCollection”)并删除类数据.将@接口复制到头中,将@实现复制到.m文件中。然后在您的项目中,#导入“UIKitCluories.h”并在UIView代码中使用:

// from a UIView subclass... returns nil if UIViewController not available
UIViewController * myController = [self firstAvailableUIViewController];


查看完整回答
反对 回复 2019-07-15
?
隔江千里

TA贡献1906条经验 获得超10个赞

UIViewUIResponderUIResponder布置方法-nextResponder的实现返回nilUIView重写此方法,如UIResponder(出于某种原因,而不是在UIView)如下所示:如果视图具有视图控制器,则由-nextResponder..如果没有视图控制器,该方法将返回SuperView。

将这个添加到您的项目中,您就可以滚动了。

@interface UIView (APIFix)- (UIViewController *)viewController;@end@implementation UIView (APIFix)- (UIViewController *)viewController {
    if ([self.nextResponder isKindOfClass:UIViewController.class])
        return (UIViewController *)self.nextResponder;
    else
        return nil;}@end

现在UIView具有返回视图控制器的工作方法。


查看完整回答
反对 回复 2019-07-15
  • 3 回答
  • 0 关注
  • 398 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信