2013-11-13 4 views
1

Я создал UIBarButtonItem программно и хочу, чтобы он перешел к следующему ViewController, когда он нажат.UIBarButtonItem перейти к следующему viewcontroller

Это, как я создаю пользовательский UIBarButtonItem в viewDidLoad:

UIBarButtonItem *foundButton = [[UIBarButtonItem alloc] 
           initWithTitle:@"Found it!" 
           style:UIBarButtonItemStyleBordered 
           target:self 
           action:@selector(foundView)]; 

После этого я создал этот метод:

-(void)foundView:(id)sender { 

UIViewController *foundVC = [self.storyboard instantiateViewControllerWithIdentifier:@"foundView"]; 

[self.navigationController pushViewController:foundVC animated:YES]; 
} 

ViewController, где я хочу пойти после UIBarButtonItem щелчке имеет Идентификатор раскадровки: «foundView».

Что я здесь делаю неправильно?

ответ

4

Изменить код так:

UIBarButtonItem *foundButton = [[UIBarButtonItem alloc] 
           initWithTitle:@"Found it!" 
           style:UIBarButtonItemStyleBordered 
           target:self 
           action:@selector(foundView:)]; 

Вы забыли : после foundView в вашем селекторе, так что вы не вызовите метод.

+0

и посмотрите на ответ @nhgrif тоже –

+0

Спасибо, сейчас хорошо. –

+0

приветствую :) –

1

Вы можете создать segue от ViewControllerA до ViewControllerB. Обратите внимание: этот segue подключает два контроллера вида. Не кнопка для контроллера вида. Теперь, на раскадровке, дайте segue описательное название. Например: segueFoundView.

Теперь это сделать:

-(void)foundView:(id)sender { 
    [self performSegueWithIdentifier:@"segueFoundView" sender:self]; 
} 

редактирование: исправлено написание

+0

В случае, если кто-то делает копию/вставку, это должно быть 'performSegueWithIdentifier'. –

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