Представления не отображаются после переименования файлов пера - PullRequest
0 голосов
/ 11 июля 2011

Я переименовал некоторые nib-файлы, из

EEMSystemDetailElpho в EEMSystemDetailElphoView, EEMSystemDetailTransfer в EEMSystemDetailTransferView, EEMSystemDetailProbing в EEMSystemDetailProbing в EEMSystemDetailProbingView.* Все они являются частью представления UIScroll, и представление UIScroll загружается и показывает, однако после переименования nib-файлов ни одно из трех моих подпредставлений не отображается.Я загружаю представления, выделяя и инициализируя контроллеры, как и раньше.

NSMutableArray *controllers = [[NSMutableArray alloc] init];
elphoController = [[EEMSystemDetailElphoController alloc] init];
[controllers addObject:elphoController];
CGRect frame = scrollView.frame;
frame.origin.x = 0;
frame.origin.y = 0;
elphoController.view.frame = frame;
[scrollView addSubview:elphoController.view];

transferController = [[EEMSystemDetailTransferController alloc] init];
[controllers addObject:transferController];
frame.origin.x = frame.size.width;
frame.origin.y = 0;
transferController.view.frame = frame;
[scrollView addSubview:transferController.view];

probingController = [[EEMSystemDetailProbingController alloc] init];
[controllers addObject:probingController];
frame.origin.x = frame.size.width * 2;
frame.origin.y = 0;
probingController.view.frame = frame;
[scrollView addSubview:probingController.view];

viewControllers = controllers;
[controllers release]; 

Я заметил, что если я добавлю мои старые файлы .nib в папку с конкретными приложениями в папке «Библиотека» / «Поддержка приложений» / «Имитатор телефона» / (текущая версия) / «Приложения» / (конкретное приложение),просмотров показывают.Это указывает на то, что XCode каким-то образом не замечает моего изменения имен файлов.Я не получаю ошибок при запуске приложения, мои представления просто не отображаются.

Есть мысли?

Ответы [ 3 ]

2 голосов
/ 11 июля 2011

Если имя пера отличается от имени контроллера представления, который управляет им, тогда вы должны использовать

- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle

так, например, ваш первый контроллер будет загружен

elphoController = [EEMSystemDetailElphoController alloc] initWithNibName:@"EEMSystemDetailElphoView" bundle:nil]];

Это назначенный инициализатор для UIViewController

Согласно документам Apple

Если вы укажете nil для параметра nibName, вы должны либо переопределить метод loadView и создать там ваши представления, либо вы должны предоставить файл nib в вашем пакете, имя которого (без расширения .nib) соответствует имени вашего контроллера представления учебный класс. (В этом последнем случае имя класса становится именем, хранящимся в свойстве nibName.) Если вы не сделаете ничего из этого, контроллер представления не сможет загрузить свое представление .

( Ударная мина )

Используйте vanilla init только в том случае, если UIViewController не имеет кончика или гарантировано, что имя кончика и имя контроллера представления идентичны. Даже в последнем случае вы действительно должны использовать назначенный инициализатор и передать nil для nibName и nibBundle

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

когда вы переименовываете свои файлы, тогда соединения исчезнут. Так что, пожалуйста, найдите это.

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

попробуйте удалить соединения и подключиться обратно к их владельцам соответствующих файлов. удалите сборку из симулятора и из папки приложения и запустите ее снова.

надеюсь, что это работает.

TNX

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...