1
无论出于何种原因,下面的代码是不工作:问题实施的UIView类别
#import <Foundation/Foundation.h>
@interface UIView (FindUIViewControllerParent)
- (UIViewController *) firstAvailableUIViewController;
- (id) traverseResponderChainForUIViewController;
@end
#import "UIView+FindUIViewControllerParent.h"
@implementation UIView (FindUIViewControllerParent)
- (UIViewController *) firstAvailableUIViewController
{
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
parentViewController = [self firstAvailableUIViewController];
的firstResponder是回来为无,而不是被父视图控制器(当我这样做是没有它的类别工作很好)。我已经阅读了一些其他线程说,以在项目设置中对其他链接选项进行一些调整,并且我已经尝试了这些,但仍然无法正常工作。任何人都可以看到我在这里做错了吗? (这段代码几乎完全从另一个得到大量投票的线程中复制)。
在类内抛出一个#error,这样你就可以检查这个类是否被编译。 – Can
可以 - 正在编译,因为当我正在调试时,代码的那部分被激活。问题是,它为自己的nextResponder返回的响应者是零,当它不应该。 –