Отображение веб-контента

Если Ваш пользовательский интерфейс включает a UIWebView объект, можно вывести на экран локальное содержание или содержание, загружающееся из сети.

Загрузка локального содержания

При загрузке локального содержания можно или создать содержание динамично или загрузить его из файла и вывести на экран его с помощью loadData:MIMEType:textEncodingName:baseURL: или loadHTMLString:baseURL: метод. Метод в Перечислении 4-1 использует loadData:MIMEType:textEncodingName:baseURL: метод для загрузки содержания файла PDF в веб-представление.

Перечисление 4-1  , Загружающее локальный файл PDF в веб-представление

- (void)viewDidLoad {
    [super viewDidLoad];
 
    NSString *thePath = [[NSBundle mainBundle] pathForResource:@"iPhone_User_Guide" ofType:@"pdf"];
    if (thePath) {
        NSData *pdfData = [NSData dataWithContentsOfFile:thePath];
        [(UIWebView *)self.view loadData:pdfData MIMEType:@"application/pdf"
            textEncodingName:@"utf-8" baseURL:nil];
    }
}

Текст, кодирующий строку, не имеет никакого эффекта на данные PDF, но сохраняется в перечислении, например, цели.

Загрузка содержания от сети

Для загрузки содержания из сети Вы создаете NSURLRequest объект и передача это к loadRequest: метод Вашего веб-представления.

[self.myWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.apple.com/"]]];

Поскольку загрузка веб-ресурса могла бы занять время, Вы могли бы вывести на экран индикатор действия, чтобы указать, что загрузка в стадии реализации. Можно сделать это путем присвоения делегата в веб-представлении и реализации UIWebViewDelegate методы, как в Перечислении 4-2. Делегат выводит на экран индикатор действия, когда загрузка запускает и скрывает его когда нагрузочные концы. Если существует проблема с загрузкой, она создает сообщение об ошибке HTML и, с помощью loadHTMLString:baseURL: метод, загрузки это в веб-представление для дисплея.

Перечисление 4-2  делегат веб-представления загрузка сети управления

- (void)webViewDidStartLoad:(UIWebView *)webView
{
    // starting the load, show the activity indicator in the status bar
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
}
 
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    // finished loading, hide the activity indicator in the status bar
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
 
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
    // load error, hide the activity indicator in the status bar
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
 
    // report the error inside the webview
    NSString* errorString = [NSString stringWithFormat:
                             @"<html><center><font size=+5 color='red'>
                             An error occurred:<br>%@</font></center></html>",
                             error.localizedDescription];
    [self.myWebView loadHTMLString:errorString baseURL:nil];
}

Если после подачи основанной на сети заявки загрузки необходимо выпустить веб-представление по какой-либо причине, необходимо отменить незаконченный запрос прежде, чем выпустить веб-представление. Можно отменить запрос загрузки с помощью веб-представления stopLoading метод. Типичное место для включения этого кода было бы в viewWillDisappear: метод владения просматривает контроллер. Чтобы определить, находится ли запрос все еще на рассмотрении, можно проверить значение в веб-представление загрузка свойство. Перечисление 4-3 иллюстрирует, как Вы могли бы сделать это.

  Когда веб-представление должно исчезнуть, перечисление 4-3, Останавливающее загрузку, запрашивает

- (void)viewWillDisappear:(BOOL)animated
{
    if ( [self.myWebView loading] ) {
        [self.myWebView stopLoading];
    }
    self.myWebView.delegate = nil;    // disconnect the delegate as the webview is hidden
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}

loadRequest: пример взят от UICatalog: Создание и Настройка Средства управления UIKit (Obj-C и Swift) проект примера кода.