Проблемы с инициализацией UIWebView внутри ViewController

#ios #objective-c #uiwebview

#iOS #objective-c #uiwebview

Вопрос:

Я хочу инициализировать UIWebview объект внутри моего WebViewController . У меня возникли небольшие проблемы с его инициализацией и направлением его на URL, который был отправлен ему из предыдущего ViewController .

В viewDidLoad моем WebViewController случае я пытаюсь инициализировать его следующим образом:

     UIWebView *tempWebview = [[UIWebView alloc]initWithFrame:theFrame];
    NSURL *url = [NSURL URLWithString:_itemURL];
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
    self.myWebView = tempWebview;
    [tempWebview loadRequest:urlRequest];
    _myWebView.delegate=self;

    [WebViewController loadRequest:urlRequest];
  

Однако это приводит к ошибкам, указывающим:
use of undeclared identifier'theFrame' , и no known class method for selector loadRequest .

Полный код приведен ниже:

WebViewController.h:

 #import <UIKit/UIKit.h>
#import "MatchCenterViewController.h"

@interface WebViewController : UIViewController

@property (strong, nonatomic) NSURL *itemURL;
@property (weak, nonatomic) IBOutlet UIWebView *myWebView;

@end
  

WebViewController.m:

 #import "WebViewController.h"

@interface WebViewController ()

@end

@implementation WebViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}


- (void)viewDidLoad
{
    [super viewDidLoad];

    UIWebView *tempWebview = [[UIWebView alloc]initWithFrame:theFrame];
    NSURL *url = [NSURL URLWithString:_itemURL];
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
    self.myWebView = tempWebview;
    [tempWebview loadRequest:urlRequest];
    _myWebView.delegate=self;

    [WebViewController loadRequest:urlRequest];

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

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end
  

Комментарии:

1. Где вы инициализируете theFrame ? Устанавливается _itemURL правильно? Вы пытаетесь вызвать loadRequest , который является методом экземпляра on UIWebViews , как метод класса on WebViewController , который является подклассом UIViewController . Почему?

Ответ №1:

Сначала вам нужно определить, что вы собираетесь использовать делегат UIWebView в вашем файле .h как:

 @interface WebViewController : UIViewController <UIWebViewDelegate>
  

Если у вас уже есть WebView, определенный в вашем Xib-файле, зачем вы создаете другой UIWebView и назначаете его WebView IBOutlet? Вы могли бы просто сделать:

   self.myWebView.delegate = self;  //Note that I have set the delegate first before calling LoadRequest

  NSURL *url = [NSURL URLWithString:@"http://www.google.com"]; 

  NSURLRequest *request = [NSURLRequest requestWithURL:url]; 

  [self.myWebView setScalesPageToFit:YES];         

  [self.myWebView loadRequest:request];