Como gerenciar links em uma exibição da web em seu aplicativo ios

Video: BreadcrumbsAway tweak lets you dismiss iOS 9 app links

Uma coisa interessante sobre pontos de vista em seu aplicativo iOS que faz (ou pode) carregar o conteúdo web real para seu aplicativo em vez de usar um navegador - é que as ligações estão vivos e os usuários podem seguir os links de que a visão E se você deixá-los.

Video: Setting up Deep Links in an iOS app

Depois que o usuário está no site o tempo, o usuário pode querer olhar para o link NWS New York, NY, no canto superior esquerdo. Se o usuário fosse seguir esse link, porém, ele não retornaria&rsquo-t têm uma maneira de voltar para a página de origem.

Hmm.

Video: Introducing Firebase Dynamic Links

Para ser capaz de navegar de volta para o ponto de vista de origem, você precisa criar outro botão e rotulá-la Voltar ao Tempo (Ou qualquer que seja o controlador anterior é) para que o usuário saiba que ela pode usá-lo para voltar à vista anterior. Criando este botão é muito fácil de fazer.

Talvez, você não&rsquo-t quer ter esse botão pop-up quando o usuário está na página web de origem, porque, naquele momento, não&rsquo-s não vai voltar. Então, como você manter o controle de quem&rsquo-s onde em toda a estrutura de links de navegação? Aqui, você está assistido por dois métodos web vista delegado, webView: shouldStartLoadWithRequest: navigationType: e webViewDidFinishLoad:.

webView: shouldStartLoadWithRequest: navigationType: é um UIWebView delegar método. isto&rsquo-s chamado antes uma visão web começa a carregar o conteúdo para ver se o usuário quer a carga para prosseguir.

Em primeiro lugar, adotar o UIWebView protocolo adicionando o código para a negrito WeatherController.h.

#importar "DetailViewController.h"WeatherController @interface: DetailViewController@property (fraco, nonatomic) IBOutlet UIWebView * weatherView - d

Lembre-se que quando você adota um protocolo delegado, o compilador, em seguida, certifique-se de que todos os métodos necessários são, na verdade lá e que todos os tipos estão corretas - para fazê-lo!

Em seguida, adicione este código para WeatherController.m .

- (BOOL) webView: (UIWebView *) webViewshouldStartLoadWithRequest: (NSURLRequest *) pedido navigationType: (UIWebViewNavigationType) navigationType {if (navigationType == UIWebViewNavigationTypeLinkClicked) {if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {if ([self .toolbar.itemscontainsObject: self.backButton]) {NSMutableArray * itemsArray = [self.toolbar.items mutableCopy] - [itemsArray ADDOBJECT: self.backButton] - [setItems self.toolbar: itemsArray animado: NO] -} else {self. navigationItem.rightBarButtonItem = self.backButton -}} return do Sim}


Logo no início, você verificar para ver se o usuário tocou um link incorporado. (Você tem que ver se um link é clicado, porque esta mensagem é enviada para o delegado em várias circunstâncias diferentes.)

Video: Sending and Sharing app links with your iPhone or iPad in iOS 6.0

if (navigationType == UIwebViewNavigationTypeLinkClicked) {

Em seguida, verificar para ver se você estiver em um iPad ou não. Se você estiver em um iPad, você estará usando uma barra de ferramentas, mas em um iPhone, você vai usar uma barra de navegação.

se ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {

Se você estiver em um iPad e o usuário clicou em um link, você quer ter um botão Voltar para que o usuário possa voltar. Se há um lá, você não deseja adicionar um segundo. Então você olha para a matriz de itens na barra de ferramentas para ver se self.backButton já está lá.

if ([self.toolbar.items containsObject: self.backButton]!)

Se não houver um botão Voltar lá, adicioná-lo com o código padrão para fazer isso: você copiar a barra de ferramentas do itms matriz em uma matriz mutável chamada itemsArray. Em seguida, você adicionar o botão Voltar para-lo e substituí conjunto da barra de ferramentas com o mutável Unidmatriz.

{NSMutableArray * itemsArray = [self.toolbar.items mutableCopy] - 
[ItemsArray addObject: self.backButton] -
[SetItems self.toolbar: itemsArray animado: NO] -}

Em seguida, adicione o volte: método para o arquivo WeatherController.m. Esta é a mensagem enviada quando o Voltar Tanto faz botão é premido.

- (Void) goBack: (id) sender {[self.weatherView goBack] -}

Finalmente, você quer se livrar da Voltar Tanto faz botão quando você&rsquo re-exibir a página original. Aqui está o código para fazer isso.

- (Void) webViewDidFinishLoad: (UIWebView *) webView {if ([self.weatherView canGoBack] == NO) {NSUInteger backButtonIndex = [self.toolbar.itemsindexOfObject: self.backButton] -se (([[UIDevice currentDevice] userInterfaceIdiom] = = UIUserInterfaceIdiomPad) &&(! BackButtonIndex = NSNotFound) {NSMutableArray * itemsArray = [self.toolbar.items mutableCopy] - [itemsArray removeObject: self.backButton] - [setItems self.toolbar: itemsArray animado: NO] -} else {self.navigationItem.rightBarButtonItem = nada-}}}

O delegado é enviado ao webViewDidFinishLoad: mensagem após o ponto de vista foi carregado. Neste ponto, você verificar para ver se há&rsquo-s qualquer coisa para voltar para (a visão web mantém o controle de esses tipos de coisas). Se não, retire o botão da barra de ferramentas ou barra de navegação.


Publicações relacionadas