Как получить UIView из UIViewController, не добавляя контроллер в иерархию представления и не делая его видимым? - PullRequest
1 голос
/ 27 августа 2011

Я хочу избежать выкладывания вида программно.

Я хочу использовать только файл NIB для такой работы.

Проблема в том, что единственный способ, которым я знаю, чтобы оживить NIB-файл, это через контроллер, подобный так:

ZBarReaderViewController* reader = [[ZBarReaderViewController alloc] init];
ScannerOverlayViewController *sovc =
[[ScannerOverlayViewController alloc] initWithNibName:@"ScannerOverlayView" bundle:nil];
reader.cameraOverlayView = sovc.view;

Но этот подход не работает так хорошо, потому что пошаговое выполнение отладчика показывает, что представления имеют значение 0x0 или ноль.

Теперь это может быть из-за того, что контроллер никогда не добавляется / не отображается в иерархии представлений, и я пытаюсь извлечь из него представление, чтобы переработать его как «представление наложения» на другом контроллере, который позволяет мне указать это.

Любые мысли о том, как это можно сделать без написания View программно?

1 Ответ

1 голос
/ 27 августа 2011

Вы можете загрузить представление из файла XIB:

// I assume, that there is only one root view in interface file
NSString *nibName = @"CustomView";
NSArray *loadedObjects = [[NSBundle mainBundle] loadNibNamed:nibName owner:nil options:nil];
UIView *view = [loadedObjects lastObject];
...