有没有一种内置的方法可以从 UIView
到它的 UIViewController
?我知道你可以通过 [self view]
从 UIViewController
到它的 UIView
但我想知道是否有反向引用?
最佳答案
使用 Brock 发布的示例,我对其进行了修改,使其成为 UIView 的类别,而不是 UIViewController,并使其递归,以便任何 subview 都可以(希望)找到父 UIViewController。
@interface UIView (FindUIViewController)
- (UIViewController *) firstAvailableUIViewController;
@end
@implementation UIView (FindUIViewController)
- (UIViewController *) firstAvailableUIViewController {
UIResponder *responder = [self nextResponder];
while (responder != nil) {
if ([responder isKindOfClass:[UIViewController class]]) {
return (UIViewController *)responder;
}
responder = [responder nextResponder];
}
return nil;
}
@end
要使用此代码,请将其添加到一个新的类文件中(我将其命名为“UIKitCategories”)并删除类数据...将@interface 复制到标题中,并将@implementation 复制到.m 文件中。然后在您的项目中,#import "UIKitCategories.h"并在 UIView 代码中使用:
// from a UIView subclass... returns nil if UIViewController not available
UIViewController * myController = [self firstAvailableUIViewController];
https://stackoverflow.com/questions/1340434/
相关文章:
ios - UIImageView 上的 UIGestureRecognizer
objective-c - 项目构建中的 CocoaPods 错误
ios - 具有 UITapGestureRecognizer 的 View 中的 UIButton
objective-c - 是否可以刷新 UITableView 中的单个 UITableViewC
ios - Storyboard 中的 Modal 和 Push segue 有什么区别?
objective-c - 如何等待异步调度的 block 完成?
objective-c - Objective-C 中的方法语法
ios - 在 Objective-C 中检查空字符串的正确方法是什么?