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返回的響應者是零,當它不應該。 –