Hjem Sosiale medier Slik implementerer du Finn Controller for Geocoding i IOS App - dummies

Slik implementerer du Finn Controller for Geocoding i IOS App - dummies

Video: Ruby on Rails by Leila Hofer 2024

Video: Ruby on Rails by Leila Hofer 2024
Anonim

For din geokodingsfunksjonalitet til å fungere i iOS-appen din, må du gjøre flere ting i Finn-kontrolleren. Det meste av det du trenger å gjøre dreier seg om å få teksten brukeren kommer inn i. Du må også ha teksten geokodet og ha den geokode plasseringen som implementert som en merknad av reisemodellobjektet, som Finn-kontrolleren vil legge til på kartet.

For å få tilgang til teksten må du først opprette et uttak for tekstfeltet. Følg disse trinnene:

  1. Velg Main_iPad. storyboard i Project navigator.

  2. Velg Master View-kontrolleren i dokumentoversikten.

  3. Velg assistenten i redigeringsvelgeren, og hvis MasterViewController. h-filen vises ikke, naviger til den ved hjelp av hoppelinjen.

  4. I dokumentoversikten åpner du beskrivelsestrekanten for den andre tabellvisningsseksjonen i Master View Controller - Master Scene for å komme til Table View-cellen.

  5. Åpne tabellvisningscellen for å avsløre innholdsvisningen som inneholder Finn-etiketten og teksten.

  6. Åpne cellens beskrivelsestrekant for å vise tekstfeltet, og kontroller deretter fra feltet Ingen kantlinjestruktur til hovedvisningskontrollgrensesnittet (i assistenteditoren) mellom @interface og -d compiler-direktiver, og legg til et uttak navngitt findText.

Dette er en annen måte å skape uttaket på.

Et UITextField-objekt er en kontroll som viser redigerbar tekst og sender en melding til sin delegat når brukeren trykker Retur-tasten. Du bruker vanligvis et UITextField-objekt for å gjøre det mulig for brukeren å legge inn små mengder tekst og deretter gjøre noe med det - for eksempel å søke etter noe eller legge til en ny kontakt.

Velg tekstfeltet, velg Standard-editoren i redigeringsvelgeren på Xcode-verktøylinjen, og åpne deretter verktøyområdet. Du kan angi et antall tekstfeltegenskaper i Attributtsinspektøren.

Hvordan vil du vite når brukeren har skrevet inn noen tekst? Også, hvordan får du tastaturet til å vise, og deretter skjul?

Når en bruker kraner i en UITextField, blir den første responderen, og tastaturet stiger automatisk slik at brukeren kan skrive inn tekst - du trenger ikke å gjøre noe for å få det til å skje.

Når brukeren er ferdig med å skrive inn tekst, tapper han Retur-tasten - Retur-tasten hvis etikett du klarte å bytte til Go.

Når Go-tasten er tappet, bestemmer tekstfeltet om det har en delegat og om delegaten har implementert en textFieldShouldReturn: metode - en av de valgfrie UITextFieldDelegate protokollmetodene.Hvis delegenten har gjort det, sender den delegaten meldingen textFieldShouldReturn:. Så textFieldShouldReturn: er stedet å fange teksten.

For å fange teksten og sende den videre til FindController, må du bli tekstfeltets delegat og implementere textFieldShouldReturn: -metoden. Men før du gjør det, må du gjøre en ting i Interface Builder.

Du starter ved å gjøre MasterViewController til en UITextFieldDelegate. Oppdater MasterViewController. h med den dristige koden for å få den til å vedta UITextFieldDelegate-protokollen.

#import @interface MasterViewController: UITableViewController @property (sterk, ikkeatomisk) DetailViewController * detailViewController; @property (svak, ikkeatomisk) IBOutlet UITextField * findText; -d

Den tunge løftingen vil bli gjort i TextFields tekstFieldShouldReturn: delegate-metode. Delegaten vil bli sendt tekstfeltet som redigeres som et argument, og Master View-kontrolleren vil sende det videre til Finn-kontrolleren.

Først må du oppdatere MasterViewController-implementeringen ved å legge til den dristige koden til MasterViewController. m.

#import "MasterViewController. H" #import "DetailViewController. H" #import "AppDelegate. H" #import "Trip. H " #import "FindController. H" @implementering MasterViewController

Du må gjøre MasterViewController til tekstField-delegatet. For å gjøre det, legg til koden i fet skrift for å seDidLoad i MasterViewController. m.

- (void) viewDidLoad {[super viewDidLoad]; AppDelegate * appDelegate = [[UIApplication sharedApplication] delegate]; selv. title = appDelegate. tur. destinationName; UIImageView * imageView = [[UIImageView alloc] initWithImage: [appDelegate. reisemåletImage]]; selv. Tableview. backgroundView = imageView; UISwipeGestureRecognizer * swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget: selvhandling: @selector (handleSwipeGesture:)]; swipeGesture. retning = UISwipeGestureRecognizerDirectionLeft; [selv. se addGestureRecognizer: swipeGesture]; selv. findText. delegere = selv; }

Nå kan du implementere tekstFieldShouldReturn: delegere metoden ved å legge til koden til MasterViewController. m.

Du vil merke noen Live Issue-feil her. Du må legge til FindLocation-egenskapen til FindController.

- (BOOL) textFieldShouldReturn: (UITextField *) textField {[textField resignFirstResponder]; hvis ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {FindController * findController = [[UIStoryboard storyboardWithName: @ "Main_iPad" bunt: nil] instantiateViewControllerWithIdentifier: @ "Find"]; findController. findLocation = textField. tekst; DetailViewController * currentDetailViewController; currentDetailViewController = [selv. splitViewController. viewControllers lastObject]; hvis (currentDetailViewController. masterPopoverController! = null) [currentDetailViewController. masterPopoverController dismissPopoverAnimated: YES]; selv. splitViewController. delegate = findController; findController.popOverButton = currentDetailViewController. popOverButton; findController. masterPopoverController = currentDetailViewController. masterPopoverController; NSMutableArray * controllers = [NSMutableArray arrayWithObjects: (self. SplitViewController. ViewControllers) [0], findController, null]; selv. splitViewController. viewControllers = controllers;} else {FindController * findController = [[UIStoryboard storyboardWithName: @ "Main_iPhone" bundle: nil] instantiateViewControllerWithIdentifier: @ "Find"]; findController. findLocation = textField. tekst; [selv. navigasjonskontrollen pushViewController: findController animated: YES];} returnere YES;}

Det første koden gjør for deg, er å sende en melding til tekstfeltet og be om å trekke seg som første responder:

[textField resignFirstResponder];

Dette har bivirkningen ved å avvise tastaturet.

Det du gjør neste er et annet tilfelle der hva som skjer, avhenger av om appen din kjører på en iPad eller iPhone.

Hvis du kjører på en iPad, oppretter du FindController fra Main_iPad. storyboard.

FindController * findController = [[UIStoryboard storyboardWithName: @ "Main_iPad" bunt: nil] instantiateViewControllerWithIdentifier: @ "Find"];

Du tilordner deretter teksten fra textField til FindController findLocation-egenskapen (som du legger til snart i FindController).

findController. findLocation = textField. tekst;

Du avviser så popover.

DetailViewController * currentDetailViewController; currentDetailViewController = [selv. splitViewController. viewControllers lastObject]; hvis (currentDetailViewController. masterPopoverController! = null) [currentDetailViewController. masterPopoverController dismissPopoverAnimated: YES];

Så tilordner du popOverButton og masterPopoverController egenskaper og gjør FindController Split View-kontrolleren delegert.

selv. splitViewController. delegate = findController; findController. popOverButton = currentDetailViewController. popOverButton; findController. masterPopoverController = currentDetailViewController. masterPopoverController;

Så gjør du bare FindController til den nye detaljvisningskontrollen i Split View-kontrollørens viewControllers-egenskap.

NSMutableArray * controllers = [NSMutableArray arrayWithObjects: (self. SplitViewController. ViewControllers) [0], findController, null]; selv. splitViewController. viewControllers = controllers;

Vær oppmerksom på at hvis det er en iPhone du har å gjøre med, befinner du FindController, tilordner egenskapen findLocation, og trykker den på navigasjonsstyringsbunken, noe som fører til at visningen skyves på plass.

FindController * findController = [[UIStoryboardstoryboardWithName: @ "Main_iPhone" bunt: nil] instantiateViewControllerWithIdentifier: @ "Find"]; findController. findLocation = textField. tekst; [selv. navigationController pushViewController: findController animated: YES];

Du returnerer endelig JA for å få tekstfeltet til å utføre sin standardadferd.

Slik implementerer du Finn Controller for Geocoding i IOS App - dummies

Redaktørens valg

Bruk skjermfeltet til å endre QuickBooks 2014 Rapporter - dummies

Bruk skjermfeltet til å endre QuickBooks 2014 Rapporter - dummies

Skjermbildet i QuickBooks Modify Report dialogboksen lar deg kontrollere rapportintervalldatoen, rapportgrunnlaget, kolonnene og en annen formatering. Bokstavene Rapporter datoområde - Datoer, Fra og Til - gjør det samme som Datoer, Fra og Til bokser i Rapportvinduet. Disse boksene lar ...

Bruk skjermfeltet til å modifisere QuickBooks 2013 Rapporter - dummies

Bruk skjermfeltet til å modifisere QuickBooks 2013 Rapporter - dummies

Hvis du klikker Tilpass rapport, QuickBooks viser dialogboksen Endre rapport, som du kan bruke til å tilpasse en rapport. Når du tilpasser en rapport, endrer du rapportens utseende, layout og informasjonen som den oppsummerer. Dialogboksen Endre rapport ser annerledes ut for ulike rapporttyper. Likevel, hvis du ser forbi ...

Bruk fanen Filtre til å modifisere QuickBooks 2014 Rapporter - dummies

Bruk fanen Filtre til å modifisere QuickBooks 2014 Rapporter - dummies

Filtrene kategorien er trolig den mest interessante og en nyttig kategori som er levert av dialogboksen QuickBooks Modify Report. Filtre-fanen lar deg sette opp filtre som du kan bruke til å angi hvilken informasjon som oppsummeres i rapporten. For å bruke Filtrer-fanen velger du først feltet du vil ha ...

Redaktørens valg

Administrere Cloud Computing Resources - dummies

Administrere Cloud Computing Resources - dummies

I teorien bør cloud computing-tjenester ikke være forskjellig fra ressursene i din eget miljø, bortsett fra at de bor eksternt. Ideelt sett har du en komplett visning av cloud computing-ressursene du bruker i dag, eller vil kanskje bruke i fremtiden. I de fleste skymiljøer kan kunden bare få tilgang til ...

Tips for Going Cloud med datanettverkene dine - dummies

Tips for Going Cloud med datanettverkene dine - dummies

Beregning med datanettverket ditt kan være, hva skal du gjøre for å ta nettverket ditt mot skyen? Her er noen anbefalinger: Ikke stole på en dårlig Internett-tilkobling. Først og fremst, før du tar noen av nettverksoperasjonene i skyen, gjør du ...

Nettverkstjenester levert gjennom Cloud Computing - dummies

Nettverkstjenester levert gjennom Cloud Computing - dummies

Tre forskjellige typer nettverkstjenester kan leveres via skyen: applikasjoner , plattformer og tjenester (infrastruktur). I de følgende avsnittene beskrives disse tre typer skyttjenester i større detalj. Programmer i skyen Vanligvis kalt Software as a Service (SaaS), fullt funksjonelle applikasjoner kan leveres via skyen. En av ...

Redaktørens valg

10 Hadoop Ressurser verdt en bokmerke - dummies

10 Hadoop Ressurser verdt en bokmerke - dummies

Følgende er ti fantastiske Hadoop-ressurser som er verdige til å skape en bokmerke i nettleseren din. Disse ressursene hjelper deg med å skape en livslang læringsplan for Hadoop. Sentralnervesystemet: Apache. org Apache Software Foundation (ASF) er det sentrale fellesskapet for open source-programvareprosjekter. Ikke bare et prosjekt kan være et Apache-prosjekt - ...

Data transformasjon i Hadoop - dummies

Data transformasjon i Hadoop - dummies

Ideen om Hadoop-inspirerte ETL motorer har fått mye trekkraft de siste årene. Hadoop er trods alt en fleksibel datalagrings- og behandlingsplattform som kan støtte store mengder data og operasjoner på dataene. Samtidig er det feiltolerant, og det gir mulighet for kapital- og programvarekostnad ...

Datablokker i Hadoop Distributed File System (HDFS) - dummier

Datablokker i Hadoop Distributed File System (HDFS) - dummier

Når du lagrer en fil i HDFS, bryter systemet det ned i et sett med individuelle blokker og lagrer disse blokkene i forskjellige slave noder i Hadoop-klyngen. Dette er en helt vanlig ting å gjøre, da alle filsystemer bryter filer ned i blokker før de lagres til disk. HDFS har ingen ...