Внутри (BOOL) webView: как открыть URL-адрес, нажатый в UIWebView, который открывает Modal UIWebView

Спасибо, что посмотрели мой вопрос. Позвольте мне сначала описать приложение. У меня есть приложение на основе панели вкладок для iOS5.1, использующее раскадровку и ARC. Есть четыре вкладки с контроллером представления в каждом, который показывает веб-просмотр с локальными файлами HTML (каждый вид представляет собой другой набор отображаемых html-файлов).

В настоящее время, когда пользователь касается ссылки http или https, он откроется в Safari. Тем не менее, теперь я хочу, чтобы он открывался в приложении через модальное представление. В настоящее время у меня есть интерфейс, созданный и готовый к показу, но я не могу передать URL-адрес модалу «webview2». Я искал множество примеров для этого, используя RSURL и строки и т. Д., Но не могу заставить их работать. Некоторые из приведенных примеров кода, похоже, не работали для моей ситуации.

В моем файле FirstViewController.m (который аналогичен другим представлениям), у меня есть …

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType { //Gets the link. if (navigationType == UIWebViewNavigationTypeLinkClicked) { NSURL *URL = [request URL]; NSLog(@"url:%@",request); //Get's the url itself //If it's an external link... if ([[URL scheme] isEqualToString:@"http"] || [[URL scheme] isEqualToString: @"https" ]) { [[UIApplication sharedApplication] openURL:[request URL]]; NSLog(@"Opened in Safari"); return NO; } //If it's an email address... else if ([[URL scheme] isEqualToString:@"mailto"]) { [webView loadRequest:request]; [[UIApplication sharedApplication] openURL:[request URL]]; NSLog(@"Opened in Mail App"); return NO; } } return YES; } 

Что отлично работает, если я хочу, чтобы URL-адрес был открыт в Safari. Итак, в этой части …

 //If it's an external link... if ([[URL scheme] isEqualToString:@"http"] || [[URL scheme] isEqualToString: @"https" ]) { [[UIApplication sharedApplication] openURL:[request URL]]; NSLog(@"Opened in Safari"); return NO; } 

Мне нужно это, чтобы открыть модальный вид с кликом URL, а не Safari.

Так что я спрашиваю … Каков наилучший способ получить этот URL-адрес, а затем открыть модальный вид, а затем в модальном веб-просмотре открыть URL-адрес, который был только что затронут?

У меня уже есть модальный вид с кнопкой увольнения и т. Д. Мне просто нужно загрузить с кликом URL-адрес, когда он загружается.

Я могу загрузить модальный через строку …

 [self performSegueWithIdentifier:@"ModalWebView" sender:self]; 

но это просто загружает его без какой-либо информации о URL и пустой веб-просмотр, конечно. Модальный использует WebViewController.h / m.

Если кто-нибудь скажет мне, как открыть и передать URL-адрес, чтобы он загружался в сегменте «ModalWebView», я был бы признателен. Пожалуйста, дайте мне знать, нужно ли мне создавать какие-либо свойства или что-то еще, что я должен включить в свой WebViewController.h / m, который запускает модальное представление. Может быть – (void) prepareForSegue нужно использовать? Если да, то как?

Я понимаю, что ответ может быть простым, но я все еще новичок и провел дни, пытаясь найти четкий ответ. Я нашел ответы на многие из моих вопросов на этом сайте, прежде чем искать, но, боюсь, я застрял на этом.

Спасибо за ваше время и терпение.

One Solution collect form web for “Внутри (BOOL) webView: как открыть URL-адрес, нажатый в UIWebView, который открывает Modal UIWebView”

В вашем контроллере view prepareForSegue метод prepareForSegue и добавьте следующий код.

 -(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { NSLog(@"Source Controller = %@", [segue sourceViewController]); NSLog(@"Destination Controller = %@", [segue destinationViewController]); NSLog(@"Segue Identifier = %@", [segue identifier]); if ([segue.identifier isEqualToString:@"ModalWebView"]) { ModalWebViewController *wVC = [segue destinationViewController]; wVC.url = [NSURL URLWithString:article.url]; // replace article.url with your url. } } 

В моем коде выше URL-адрес, который будет использоваться, устанавливается из моего объекта article.url. Чтобы заставить это работать, вам нужно получить URL-адрес из метода shouldStartLoadWithRequest .

 // CurrentViewController.h @property (strong, nonatomic) NSURL *targetUrl; // CurrentViewController.m //If it's an external link... if ([[URL scheme] isEqualToString:@"http"] || [[URL scheme] isEqualToString: @"https" ]) { targetUrl = url; [self performSegueWithIdentifier:@"ModalWebView" sender:self]; return NO; } 

Если вы используете вышеописанное, мы теперь заменяем article.url в первом блоке кода targetUrl.

 if ([segue.identifier isEqualToString:@"ModalWebView"]) { ModalWebViewController *wVC = [segue destinationViewController]; wVC.url = targetUrl; } 

В вашем представлении контроллер для вашего модального файла web view.h создает NSURL.

 //ModalWebViewController.h @property (strong, nonatomic) NSURL *url; 

В вашем файле реализации (.m) создайте метод viewDidAppear

 //ModalWebViewController.m -(void) viewDidAppear:(BOOL)animated { [_webView loadRequest:[NSURLRequest requestWithURL:url]]; } 

Надеюсь, я объяснил, что достаточно, чтобы вы могли реализовать.

  • Как скопировать ограничения автоматической компоновки в IB из одного представления в другое?
  • Статус профилей профилей недействителен (управляется XCode)
  • сделать страницу iOS прокручиваемой при включенной клавиатуре
  • Как получить UIImage из AppIcon?
  • Не удалось создать каталог журнала
  • Xcode 8.1 Невыполнение псевдонимов типа автозаполнения
  • Сохранение свойства bool для файла в iOS.
  • Есть ли способ программно обновлять фреймы (Swift)
  • Как запретить построителю интерфейса добавлять 20-процентное дополнение к содержимому subview?
  • В отладчике Xcode lldb, что означает <parent NULL>?
  • Передача переменных в xcode возвращает null
  • Interesting Posts

    XCode 8 – IB Designables – Не удалось отобразить и обновить статус автомакета, Агент разбился

    hidesBottomBarWhenPushed и pushy UISearchBar для коротких UITableViews

    Как установить ярлык доступности для определенного сегмента UISegmentedControl?

    PHImageManager получает полноразмерное изображение

    Неоднозначная ссылка на члена при использовании ceil или round

    iOS 7 uitabbar показывает, невидимый на ios8

    Кодирование не выполняется при проверке IPA с помощью вложенных фреймворков

    Как обращаться с NSExtensionActivationRule является истинным?

    Пропорциональные ограничения расстояния в макете

    Как установить ограничение соотношения сторон программным способом в ios

    получение данных из закрывающей системы, которая извлекает данные из firebase

    Зацикливание файла AAC с помощью ExtAudioFileRead – ошибка?

    Передача данных из массива struct в новый контроллер таблицы

    Настройка UINavigationBar и кнопки «Назад»

    Как перенести данные в двоичную форму через Bluetooth в iPhone App

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.