Вопрос по uiwebview, xcode, uiviewcontroller, ios, objective-c – Открытие нового UIViewController при нажатии на ссылку в UIWebView

3

Я нашел эту тему, которая соответствует моей проблеме:Щелчок по ссылке в UIWebView помещает в стек NavigationView.

Однако следующие ситуации отличаются: Вместо использования navigationController я использую приложение View Based для ручного переключения на другой viewcontroller при нажатии соответствующих кнопок. Вместо использования ссылок я использую метод onClick для определения, когда пользователь нажимает на что-то в UIWebView и пытается открыть новый ViewController с новым UIWebView.

Будет ли работать тот же код или мне нужно будет внести некоторые изменения?

Ваш Ответ

2   ответа
1

что вы можете использовать shouldStartLoadWithRequest, как Омар опубликовал. Если у нового viewcontroller есть webviewcontroller, то вы должны передать URL (или даже запрос) новому viewcontroller, чтобы показать URL, по которому щелкнули.

12

первая: когдаonClick, вам придется перенаправить вашу текущую страницу в новое место Это место, например, будетMYLocation://GoThere

второй: ОбновитеshouldStartLoadWithRequest

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

NSURL *url = request.URL;
NSString *urlString = url.absoluteString;

//Check if special link
if ( [ urlString isEqualToString: @"MYLocation://GoThere" ] ) {
    //Here present the new view controller
    MyViewController *controller = [[MyViewController alloc] init];
    [self presentViewController:controller animated:YES];

    return NO;
}

    return YES;

}
Затем передайте некоторую дату в делегате используемому вами mainviewcontroller и скопируйте этот код в него MyViewController * controller = [[MyViewController alloc] init]; [self presentViewController: контроллер анимирован: ДА]; пусть mainviewcontroller занимается инициализацией и передачей данных в представление, которое он представляет
Yesss. Это стандартный способ сделать это. +1.
извини, Омар, что беспокою тебя снова. вот что я сделал: я вызвал функцию от делегата для передачи управления контроллеру основного вида. Там я попытался изменить контроллеры представления, используя presentModalViewController. когда это не сработало, я попытался использовать insertSubview. Однако ни один из них не работает. Кажется, каждый раз, когда я пытаюсь добавить новый контроллер представления, вызывается viewDidLoad. И когда я попытался переключить взгляды оттуда, которые не работали, Знаете ли вы, что происходит? CodeRed
Привет, я столкнулся с точно такой же проблемой. Я уже потратил 2 дня на поиски решения, но ситуация все та же. Пожалуйста, помогите мне....
хорошо .. это работает. Однако я реализовал этот метод в делегате webView. Я не могу использовать себя, поэтому я называю основной ViewController вместо себя. Это вызывает сбой приложения. Не могли бы вы мне помочь? CodeRed

Похожие вопросы