2012-03-28 3 views
0

У меня есть UIButton, который находится над UINavigationBar's rightBarButtonItem. UIButton скрыт. Таким образом, на вид видно только UINavigationBar's rightBarButtonItem. По щелчку rightbarbuttonitem я хочу вызвать действие скрытого UIButton. Является ли это возможным. Если да, то как?Как вызвать скрытое событие UIButton в действии UIBarButtonItem

Редактировать: Есть ли способ сделать это без использования селекторов. Есть ли способ, как я могу просто вызвать действие UIButton при щелчке UIBarButtonItem, например, действие: UIButton.action

ответ

0

Метод, вызываемый при касании rightBarButtonItem, может вызываться при касании UIButton.

-(IBAction)rightBarButtonTrigger:(id)sender { 
    NSLog(@"rightBarButtonTrigger"); 
    [self uiButtonTrigger:sender]; 
} 

-(IBAction)uiButtonTrigger:(id)sender { 
    NSLog(@"uiButtonTrigger"); 
} 
+0

Я создаю UIButton программно –

+0

Вы можете использовать тот же код в этом случае. У вас есть определенная причина не желать использовать селекторы? UIButton наследует действия от UIControl. Вы можете установить действие при создании UIButton или использовать addTarget UIControl: действие: forControlEvents: метод и действие принимают селектор. – Nate

+0

Есть ли способ, когда я могу установить действие UIBarButtonItem как nil и вместо этого запускать действие UIButton программно. –

0

Вы можете написать общий метод для обеих кнопок rightBarButtonItem и UIButton. Таким образом, они будут запускать тот же метод в своем событии click.

1

Пожалуйста, попробуйте приведенный ниже код, чтобы вызвать действие для UIBarButtonItem. Но вы используете селектор в этом !!!

- (void) viewDidLoad 
    { 
     // change the back button and add an event handler 
     self.navigationItem.leftBarButtonItem = 
     [[UIBarButtonItem alloc] initWithTitle:@"Pages" 
             style:UIBarButtonItemStyleBordered 
             target:self 
             action:@selector(handleBack:)]; 
    } 

    - (void) handleBack:(id)sender 
    { 
     // do your custom handler code here 

     // make sure you do this! 
     // trigger an hidden button 
[itsHiddenButton sendActionsForControlEvents: UIControlEventTouchUpInside]; 

    } 

. Надеюсь, это поможет ..