2017-02-18 20 views
0

У меня есть правильный элемент кнопка бар, как это определено в моем viewDidLoad:Пользовательский элемент панели кнопок не выполняет переход

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 

    UIButton *helpButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:helpButton ]; 

} 

Я связала элемент кнопка бар и выполняется переход с идентификатором, но это не толкая вид. Почему это так?

- (IBAction)btnShowHelp:(id)sender { 

    [self performSegueWithIdentifier:@"showHelp" sender:self]; 
} 

ответ

1

удалить связь между вашей кнопкой и - (IBAction)btnShowHelp:(id)sender, измените метод - (void)btnShowHelp(id)sender, а затем изменить код в viewDidLoad так:

UIButton *helpButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
    [helpButton addTarget:self action:@selector(btnShowHelp:) forControlEvents:UIControlEventTouchUpInside]; 

    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:helpButton ]; 
+0

Сделать предложение: Старайтесь не использовать XIB, используйте код для реализации какого эффекта вы хотите. –

+0

Спасибо! Просто вычислил это в то же время, что и haha ​​ – iamhx

+0

, вы можете предположить, что добавление цели с использованием метода 'addTarget ..' делает только ссылку между кнопкой и фактическим видом. – vaibhav

0

Оказывается, что btnShowHelp, что было в моем раскадровки уже заменил новым UIButton, определенным в viewDidLoad, и в этом не было необходимости.

https://developer.apple.com/reference/uikit/uibarbuttonitem/1617151-initwithcustomview?language=objc

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

Я делал [self.navigationItem.rightBarButtonItem setAction:] который я тогда понял, что я полагаю, установить действие для моего UIButton вместо пункта кнопки бар ...

UIButton *helpButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
[helpButton addTarget:self action:@selector(showHelp) forControlEvents:UIControlEventTouchUpInside]; 
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:helpButton ]; 

- (void)showHelp { 

    [self performSegueWithIdentifier:@"showHelp" sender:self]; 
} 

Adding action and target to a custom Navigation BarButtonItem?