2015-07-06 6 views
0

У меня есть ViewController, MyWebViewController, где я использую webView, созданный в xib. .h файл имеетiOS - ViewController типа MyCustomViewController

@interface MyWebViewController : UIViewController 
@property (nonatomic,strong) IBOutlet UIWebView* webView; 

.m в файле,

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [self.webView loadRequest:[NSURLRequest requestWithURL:[[NSURL alloc] initWithString:@"http://www.google.com"]]]; 
} 

Вот мой XIB enter image description here

Он отлично работает для меня.

Позже я создаю еще один ViewController, RootViewController типа MyWebViewController.

#import "MyWebViewController.h" 

@interface RootViewController : MyWebViewController 

XIB из MyViewViewController загружается как ожидалось, но webView не загружен в XIb. Я потратил больше времени на отладку.

Позже я удалил webView из xib и создал его программно.

self.webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 441)]; 
self.webView.delegate = self; 
[self.webView loadRequest:[NSURLRequest requestWithURL:[[NSURL alloc] initWithString:@"http://www.google.com"]]]; 
[self.view addSubview:self.webView]; 

Создание webView программно дает ожидаемый результат.

Мне нужно немного уточнить, почему мой webView не загружен, когда он был создан в xib, и работает отлично, когда он был создан программно?

ответ

0

Это связано с изменением поведения загрузки iOS9. Предполагается, что разработчик обновит элементы пользовательского интерфейса в -viewWillLayoutSubviews или -viewDidAppear.

1

В вашем RootViewController, ты по телефону:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
} 

Таким образом, это будет вызывать функцию базового класса и Webview загрузит ожидаемо. Вы забудете поставить это в MyWebViewController.

РЕДАКТИРОВАТЬ:

Причина self.webView не получает нагрузку в производном классе происходит потому, что он помечен IBOutlet поэтому необходима ссылка на предварительно выделенный элемент из UIView или xib и в производном классе мы не instatiating файл базового вида, например, MyWebViewController.xib. Таким образом, self.webView появляется nil, а вызов функции на nil игнорируется молча. Таким образом, как только вы делаете это по коду, он не зависит от файла xib и работает.

Надеюсь, это поможет!

+0

Я добавил в обоих режимах просмотра. Но никаких изменений. – iOS

+0

@iOS, проверьте мои обновления. – NeverHopeless