Внутри (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]]; } 

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

  • Требуются ли специальные действия для создания и использования Framework, который можно использовать в расширении Apple Watch?
  • Имитировать iPhone (реальное устройство, НЕ имитатор) по программному обеспечению через USB
  • Xcode 4.5 - невозможно установить файлы разработчика .ipa через iTunes
  • Xcode: использование одного и того же идентификатора пакета среди нескольких пользователей
  • Apple изменила формат файла .mobileprovision и как я могу просмотреть текущий формат?
  • Unity3d iOS build exportArchive Размер IPA
  • XCTest / XCTest.h не найден на старых проектах, построенных в Xcode 6
  • Не удается полностью символизировать журнал сбоев iOS
  • Как удалить определенные фреймворки и код из сборки выпуска в App Store?
  • xCode Crashing при запуске приложения
  • Использование AVPlayer для воспроизведения песен с защитой DRM
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.