pushViewController отладка - PullRequest
1 голос
/ 19 мая 2009

Я пытаюсь (от моего третьего ребенка в иерархии) загрузить представление корня следующим образом. Это не работает, и я получаю следующую ошибку при запуске приведенного ниже кода.

-[DetailViewController clickButton:]: unrecognized selector sent to instance 0x1161e00' 

Код:

 MapViewController *dvController = [[MapViewController alloc] initWithNibName:@"MapView" bundle:[NSBundle mainBundle]];
        [self.navigationController pushViewController:dvController animated:YES];
        [dvController release];
        dvController = nil;

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

Ответы [ 2 ]

1 голос
/ 20 мая 2009

Код, который вы написали для создания MapViewController и помещения его в стек контроллера представления, является правильным.

Нераспознанная ошибка селектора говорит о том, что вы отправляете, пытаетесь вызвать метод (с именем clickButton :), который не существует.

Я бы заподозрил орфографическую ошибку. Я полагаю, что у вас, скорее всего, есть определенная кнопка, которая вызывает код для создания нового представления. Метод должен выглядеть так:

-(void) clickButton: (id) sender {
    MapViewController *dvController = [[MapViewController alloc] initWithNibName:@"MapView"  bundle:[NSBundle mainBundle]];
    [self.navigationController pushViewController:dvController animated:YES];
    [dvController release];
    dvController = nil;
}

Я бы проверил, есть ли у вас часть ": (id) sender". Я допустил ошибку, прежде чем реализовал метод - (void) clickButton {}, но у меня тоже было сообщение об отправке параметра.

0 голосов
/ 20 мая 2009
  1. Если вы создали кнопку программным путем и установили цель как clickButton, убедитесь, что метод clickButton присутствует

  2. Метод clickButton (в соответствии с ошибкой) должен принимать аргумент. Таким образом, определение метода будет

    • (IBAction) ClickButton: (ID) отправителя;
  3. Если вы сопоставили IBAction событию в IB, вы можете пропустить: (id) часть отправителя

  4. Чтобы загрузить контроллер корневого представления из любого представления в приложении на основе навигации, используйте

    [[self navigationController: popToRootViewControllerAnimated: YES];

...