Борьба с основами Navigation Controller - PullRequest
0 голосов
/ 26 июля 2011

Я дергал себя за волосы, пытаясь заставить работать базовый NavigationController, который позволял бы мне легко переключаться между представлениями.Я чувствую, что делаю успехи, но мне явно не хватает чего-то критического.Теперь у меня есть приложение-шаблон, отправляющее представления, но только путем добавления initWithNibName, указывающего на целевой NIB.Попытка добавить любую функциональность в эти вторичные представления приводит к сбою приложения с ошибкой SIGABRT.Я не могу себе представить, что это правильно. Если у меня просто обычный NIB, коммутатор работает нормально.Единственное, что я добавил к secondViewcontroller - это метка и кнопка для заполнения метки каким-то мусорным текстом.Тем не менее, в тот момент, когда я нажимаю кнопку переключения, чтобы сдвинуть эту точку, я получаю SIGABRT.Я хотел бы иметь возможность поместить функциональность в различные контроллеры представления.Я чувствую, что я так близко, но это так обостряет.Кто-нибудь может указать, где я ошибся?

#import "mainViewController.h"


@implementation mainViewController

-(void)switchView {
    UIViewController *secondViewController =   [[UIViewController alloc] initWithNibName:@"secondViewController" bundle:nil];
    secondViewController.title = @"My First View";
    [self.navigationController pushViewController:secondViewController animated:YES];  
    [secondViewController release];
}

-(void)switchViewTwo {
    UIViewController *thirdViewController =   [[UIViewController alloc]  initWithNibName:@"thirdViewController" bundle:nil];
   thirdViewController.title = @"My second View";
   thirdViewController.view.backgroundColor = [UIColor redColor];
   [self.navigationController pushViewController:thirdViewController animated:YES];
   [thirdViewController release];
}

1 Ответ

0 голосов
/ 28 июля 2011

вместо

UIViewController *secondViewController =   [[UIViewController alloc] initWithNibName:@"secondViewController" bundle:nil];

Поместите это:

MySecondViewController *secondViewController =   [[MySecondViewController alloc] initWithNibName:@"secondViewController" bundle:nil];

My MySecondViewController должно быть именем вашего UIViewController, также проверьте, действительно ли имя XIB называется secondViewController. Наконец:

  • Перейти к вашему XIB
  • Выберите файл владельца файла.
  • Выберите 3-ю вкладку в инспекторе.
  • Проверьте название класса. Это должно быть MySecondViewController вместо UIViewController.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...