2016-01-09 2 views
1

У меня есть один Base Class Я унаследовал свой Parent Class от этого Base Class.Как показать ViewController с Xib в другом ViewController как SubView

Теперь у меня есть еще ViewController С XIB. Все, что я хочу, это представить это XIB as a Вид в моем классе родителей.

Название My ViewController С XIB является: SearchResultDisplayVC

Этот код я использую мой базовый класс, чтобы показать мою XIB как Вид:

- (void)showSearchResultsView 
{ 

SearchResultDisplayVC *searchView =(SearchResultDisplayVC *)[[[NSBundle mainBundle] loadNibNamed:@"SearchResultDisplayVC" owner:[SearchResultDisplayVC class] options:nil] firstObject]; 


[self.view addSubview:searchView.view]; 

} 

В моем классе Parent я звоню его как «

[self showSearchResultsView]; 

Хотя во время компиляции я не получаю сообщение об ошибке, но когда я запускаю свой При возникновении сбоя приложения появляется следующее сообщение:

*** Terminating app due to uncaught exception 
'NSUnknownKeyException', 
reason: '[<SearchResultDisplayVC 0x1104bb380> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key view.' 
+0

Да, вы добавляете ViewController как View "' addSubView'. –

+0

Как я могу добавить его в качестве подвид или это любой другой способ делать @the_UB – Dalvik

+0

Проверить [Micky's и другие ответы здесь] (http://stackoverflow.com/questions/1486832/how-to-add-an- UIViewControllers-представление-а-подвид). –

ответ

1

Вы должны добавить контроллер дочернего представления в родительский вид.

SearchResultDisplayVC * searchView = [[SearchResultDisplayVC alloc] initWithNibName:@"SearchResultDisplayVC" bundle:nil]; 
    self.addChildViewController(searchView) 

+0

После добавления того, как subview – Dalvik

1

Пожалуйста, измените «showSearchResultsView», как:

- (void)showSearchResultsView 
{ 

UIView *searchView =(SearchResultDisplayVC *)[[[NSBundle mainBundle] loadNibNamed:@"SearchResultDisplayVC" owner:[SearchResultDisplayVC class] options:nil] firstObject]; 


[self.view addSubview:searchView]; 

} 
+0

благодарит за ваш отзыв .. но когда я запускаю этот код, я получаю предупреждение – Dalvik

1

У вас есть проблема с файлом SearchResultDisplayVC.xib Я надеюсь, Проверьте подключение на выход для просмотра в владельце файла он должен быть установлен на главный вид для любого рабочего контроллера. Как ниже,

enter image description here

Все контроллеры вид ожидать «вид» объект, который будет определен и отображенный из СИБ файлов. У вас есть контроллер контроллера, но в нем нет выхода под названием «view». В противном случае любой написанный вами код будет работать хорошо.

0

После стольких исследований, наконец, я нашел способ добавить его в window.

Теперь я могу использовать viewDidLoad и все другие методы.

- (void)showSearchResultsView 
{ 

if(!self.searchDisplayView){ 

    self.searchDisplayView = [[SearchResultDisplayVC alloc] initWithNibName:@"SearchResultDisplayVC" bundle:nil]; 

    self.searchDisplayView.delegate = self; 


    CGSize mainScreenSize = [[UIScreen mainScreen] bounds].size; 

    self.searchDisplayView.view.frame = CGRectMake(0, 
               0, 
               mainScreenSize.width, 
               mainScreenSize.height); 
} 

AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
[delegate.window addSubview:self.searchDisplayView.view]; 


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