Проблема реализации категории UIView - PullRequest
1 голос
/ 22 сентября 2011

По какой-то причине следующий код не работает:

#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 возвращается как nil, вместо того, чтобы быть родительским контроллером представления (когда я делал это без категории, это работало нормально). Я читал некоторые другие темы, в которых говорится, что нужно внести некоторые изменения в другие параметры связывания в настройках проекта, и я пробовал их, но они все еще не работают. Кто-нибудь может увидеть, что я здесь делаю не так? (этот код почти точно скопирован из другого потока, получившего массу голосов "за").

1 Ответ

1 голос
/ 23 сентября 2011

Я нашел свою проблему.Я искал и сохранял nextResponder в методе init моего представления, прежде чем представление было даже присоединено к контроллеру представления.Вот почему он правильно показывал NULL.Вместо этого я использовал свой метод категории в методе действия кнопки, и тогда он работал нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...