2013-04-29 5 views
0

У меня есть UIViewController, который я хочу отобразить UIView, который отображается в виде меню. Это меню будет содержать несколько кнопок. Я хотел повторно использовать это меню в нескольких разных местах в своем приложении, поэтому я решил создать класс с именем ViewFactory, который имеет метод, который возвращает UIView с этими кнопками.UIButtons не работает на программно созданный UIView

На мой ViewController Я вызываю этот метод и получаю возвращаемый UIView и добавляю его в качестве подзаголовка.

Это работает просто отлично. Я вижу вид и все его кнопки, однако кнопки не реагируют на какие-либо события касания. Не уверен, почему это так и любопытно узнать, что я делаю неправильно.

Вот мой код ViewFactoryClass:

- (UIView *) addCloseRow 
{ 
    // UIView container for everything else. 
    UIView *navRow = [[UIView alloc] initWithFrame:CGRectMake(0,225,350,45)]; 

    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    button.userInteractionEnabled = YES; 

    [navRow addSubview:button]; 

    [button addTarget:self action:@selector(closeButtonTouchDownEvent) forControlEvents: UIControlEventTouchDown]; 
    navRow.userInteractionEnabled = YES; 
    return navRow; 
} 

В моем главном NavigationController классе здесь, как я звоню и получаю UIView:

ViewFactory *factory = [[ViewFactory alloc] init]; 
[self.navigationController.navigationBar addSubview:[factory MainNavigationUIView]]; 

Опять же, UIView показывает вверх, но кнопки никогда не реагируют ни на что.

ответ

2

Вы добавили кнопку с мишенью и селектором для ViewFactoryClass

И теперь вы создаете экземпляр и пытаетесь вызвать действие из ViewFactory класса.

Вы можете изменить способ что-то вроде этого:

- (UIView *) addCloseRow : (id)object { 
    ... 
    [button addTarget:[object class] action:@selector(closeButtonTouchDownEvent) forControlEvents: UIControlEventTouchDown]; 
    ... 
} 
+0

Это зафиксировал его Anoop! При обновлении моего метода для передачи в объекте я смог нажать кнопку. После обновления метода я вернулся к моему NavigationViewController и прошел в классе следующим образом: '[self.navigationController.navigationBar addSubview: [factory MainNavigationUIView: self]];' – Flea

Смежные вопросы