2014-12-03 2 views
0

Я создал один UIViewController с UIWebView и попытался добавить его как подпункт к другому UIViewController. Это приводит к сбою, который отправляет ошибку с плохим запросом.iphone sdk: UIWebView crash

код контроллера, который содержит WebView выглядит следующим образом:

@interface WebViewController : UIViewController 

@end 


@interface WebViewController() <UIWebViewDelegate> 
{ 


    IBOutlet UIWebView *webView; 
} 
@end 

@implementation WebViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    webView.delegate = self; 
    NSString *str = [NSString stringWithFormat:@"<html><body>This is html text</body></html>"]; 
    [webView loadHTMLString:str baseURL:nil]; 
    // Do any additional setup after loading the view. 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{ 

    return YES; 
} 
- (void)webViewDidStartLoad:(UIWebView *)webView{ 

} 
- (void)webViewDidFinishLoad:(UIWebView *)webView{ 

} 
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{ 


} 

кодекс, который реализует WebViewController является:

WebViewController *obj = [self.storyboard instantiateViewControllerWithIdentifier:@"webView"]; 
    [self.view addSubview:obj.view]; 
+0

Вы должны держать сильную refrence для WebViewController * OBJ поэтому он не освобожден, как [само addChildViewController: OBJ]; или сделать свойство, где эта точка на нем –

ответ

1

Вам нужно добавить, связь между контроллером, добавьте это:

 [self addChildViewController:obj]; 

В вашем коде есть:

WebViewController *obj = [self.storyboard instantiateViewControllerWithIdentifier:@"webView"]; 
    [self addChildViewController:obj]; 
    [self.view addSubview:obj.view]; 
+0

Спасибо большое! Хорошо работает –

0

UIViewController случаи не должны быть использованы в качестве простых инициализаторов и делегатов их view с, как правило, используется один из UIWindow, UIViewController (или подкласс) методы, чтобы представить другой контроллер представления, в вашем случае используя экземпляр WebViewController как child view controller кажется разумным:

[self addChildViewController:obj]; 
[self.view addSubview:obj.view]; 
+0

Да, это работает, спасибо. –