Hogar Redes sociales Cómo implementar Find Controller para geocodificar en su aplicación iOS - Dummies

Cómo implementar Find Controller para geocodificar en su aplicación iOS - Dummies

Video: Cómo generar las claves API de YOUTUBE, MAPS y otras aplicaciones de GOOGLE 2024

Video: Cómo generar las claves API de YOUTUBE, MAPS y otras aplicaciones de GOOGLE 2024
Anonim

Para que su funcionalidad de geocodificación funcione en su aplicación iOS, necesitará hacer varias cosas en el controlador Buscar. La mayoría de lo que necesita hacer gira en torno a obtener el texto que ingresa el usuario. También tendrá que tener el texto geocodificado y tener la ubicación geocodificada implementada como una Anotación por el objeto modelo Trip, que el controlador Find agregará al mapa.

Para acceder al texto, primero debe crear una salida para el campo Texto. Siga estos pasos:

  1. Seleccione Main_iPad. guión gráfico en el navegador del proyecto.

  2. Seleccione el controlador de vista maestra en el contorno del documento.

  3. Seleccione el Asistente en el selector Editor, y si es MasterViewController. h archivo no aparece, desplácese hasta él utilizando la barra de Salto.

  4. En el contorno del documento, abra el triángulo de revelación para la segunda sección Vista de tabla en el Controlador de vista maestra - Escena maestra para acceder a la celda Vista de tabla.

  5. Abra la Celda de vista de tabla para mostrar la Vista de contenido que contiene la etiqueta Buscar y el texto.

  6. Abre el triángulo de revelación de esa celda para mostrar el campo Texto y luego mantén presionado el control desde el campo Texto del estilo sin bordes hasta la interfaz del controlador Vista maestra (en el editor del Asistente) entre las interfaces del compilador @interface y -d, y agrega una salida llamada findText.

Esta es otra forma de crear la salida.

Un objeto UITextField es un control que muestra texto editable y envía un mensaje a su delegado cuando el usuario presiona la tecla Retorno. Por lo general, utiliza un objeto UITextField para permitir al usuario ingresar pequeñas cantidades de texto y luego hacer algo con él, como buscar algo o agregar un nuevo contacto.

Seleccione el campo Texto, seleccione el editor Estándar en el selector Editor en la barra de herramientas de Xcode, y luego abra el área de la Utilidad. Puede establecer una serie de propiedades del campo Texto en el inspector de Atributos.

¿Cómo sabría cuando el usuario ha ingresado algún texto? Además, ¿cómo se muestra el teclado y luego se oculta?

Cuando un usuario toca en un UITextField, se convierte en el primer respondedor y el teclado se eleva automáticamente para permitirle al usuario ingresar texto; no tiene que hacer nada para que eso suceda.

Cuando el usuario termine de ingresar texto, toca la tecla Volver: la tecla Retorno cuya etiqueta logró cambiar a Ir.

Cuando se toca la tecla Ir, el campo de texto determina si tiene un delegado y si el delegado ha implementado un método textFieldShouldReturn: uno de los métodos de protocolo UITextFieldDelegate opcionales.Si el delegado lo ha hecho, envía al delegado el mensaje textFieldShouldReturn: message. Entonces textFieldShouldReturn: es el lugar para capturar el texto.

Para capturar el texto y enviarlo al FindController, debe convertirse en el delegado del campo de texto e implementar el método textFieldShouldReturn:. Pero antes de hacer eso, necesita hacer una cosa más en Interface Builder.

Empieza por hacer que MasterViewController sea UITextFieldDelegate. Actualizar MasterViewController. h con el código en negrita para que adopte el protocolo UITextFieldDelegate.

#import @interface MasterViewController: UITableViewController @property (fuerte, no atómico) DetailViewController * detailViewController; @property (débil, no atómica) IBOutlet UITextField * findText; -d

El trabajo pesado se realizará en el método textFieldShouldReturn: delegate de TextField. Al delegado se le pasará el campo de Texto que se está editando como un argumento, y el controlador de Vista Maestra lo pasará al controlador Buscar.

Primero, debe actualizar la implementación de MasterViewController agregando el código en negrita a MasterViewController. metro.

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

Tendrá que hacer que MasterViewController sea el delegado de textField. Para hacer eso, agregue el código en negrita para ver DidLoad en MasterViewController. metro.

- (void) viewDidLoad {[super viewDidLoad]; AppDelegate * appDelegate = [[UIApplication sharedApplication] delegado]; yo. title = appDelegate. viaje. nombre del destino; UIImageView * imageView = [[UIImageView alloc] initWithImage: [appDelegate. viaje destinationImage]]; yo. tableView. backgroundView = imageView; UISwipeGestureRecognizer * swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget: acción propia: @selector (handleSwipeGesture:)]; gesto de deslizar. direction = UISwipeGestureRecognizerDirectionLeft; [yo. ver addGestureRecognizer: swipeGesture]; auto. buscar texto. delegar = auto; }

Ahora puede implementar el método textFieldShouldReturn: delegate agregando el código a MasterViewController. metro.

Notarás algunos errores de Issue en vivo aquí. Deberá agregar la propiedad findLocation al FindController.

- (BOOL) textFieldShouldReturn: (UITextField *) textField {[textField resignFirstResponder]; if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {FindController * findController = [[UIStoryboard storyboardWithName: @ "Main_iPad" bundle: nil] instantiateViewControllerWithIdentifier: @ "Find"]; findController. findLocation = textField. texto; DetailViewController * currentDetailViewController; currentDetailViewController = [self. splitViewController. viewControllers lastObject]; if (currentDetailViewController. masterPopoverController! = nil) [currentDetailViewController. masterPopoverController dismissPopoverAnimated: YES]; yo. splitViewController. delegate = findController; findController.popOverButton = currentDetailViewController. popOverButton; findController. masterPopoverController = currentDetailViewController. masterPopoverController; NSMutableArray * controllers = [NSMutableArray arrayWithObjects: (self. SplitViewController. ViewControllers) [0], findController, nil]; yo. splitViewController. viewControllers = controladores;} else {FindController * findController = [[UIStoryboard storyboardWithName: @ "Main_iPhone" bundle: nil] instantiateViewControllerWithIdentifier: @ "Find"]; findController. findLocation = textField. texto; [yo. navigationController pushViewController: findController animado: YES];} return YES;}

Lo primero que el código hace por usted es enviar un mensaje al campo de texto solicitando que renuncie como primera respuesta:

[textField resignFirstResponder];

Esto tiene el efecto secundario de descartar el teclado.

Lo que debes hacer a continuación es otro caso en el que lo que sucede depende de si tu aplicación se ejecuta en un iPad o iPhone.

Si está ejecutando en un iPad, crea una instancia de FindController desde Main_iPad. guión gráfico

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

A continuación, asigna el texto de textField a la propiedad findLocation FindLocation (que luego agregará al FindController).

findController. findLocation = textField. texto;

Luego descartas el popover.

DetailViewController * currentDetailViewController; currentDetailViewController = [self. splitViewController. viewControllers lastObject]; if (currentDetailViewController. masterPopoverController! = nil) [currentDetailViewController. masterPopoverController dismissPopoverAnimated: YES];

A continuación, asigna las propiedades popOverButton y masterPopoverController y hace que FindController sea el delegado del controlador Split View.

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

Entonces simplemente hace que FindController sea el nuevo controlador de Vista de detalle en la propiedad viewControllers del controlador Split View.

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

Tenga en cuenta que, si se trata de un iPhone con el que está tratando, crea una instancia del FindController, asigne la propiedad findLocation y empújela en la pila del controlador de navegación, lo que hace que la vista se deslice en su lugar.

FindController * findController = [[UIStoryboardstoryboardWithName: @ "Main_iPhone" bundle: nil] instantiateViewControllerWithIdentifier: @ "Find"]; findController. findLocation = textField. texto; [yo. navigationController pushViewController: findController animado: SÍ];

Finalmente devuelve SÍ para que el campo de texto implemente su comportamiento predeterminado.

Cómo implementar Find Controller para geocodificar en su aplicación iOS - Dummies

Selección del editor

Social Media Commerce: Desarrolle sus propios podcasts: los podcasts

Social Media Commerce: Desarrolle sus propios podcasts: los podcasts

Pueden considerarse podcasts o no. "Redes sociales", pero pueden ser útiles para formar una audiencia y difundir su mensaje. Cuando la radio de conversación se convierte en un archivo digital multimedia que está disponible para su descarga desde Internet, se convierte en un podcast. No tienes que estar en una computadora para escuchar; cada teléfono inteligente ...

Social Media Commerce: Realice llamadas gratis con Skype: las redes sociales

Social Media Commerce: Realice llamadas gratis con Skype: las redes sociales

Proporcionan muchos formas de conectarse con sus clientes y responder sus preguntas. En el Informe de preferencias del consumidor de Avaya 2011, el modo de contacto preferido para los asuntos de servicio al cliente fue el teléfono. Skype ofrece un servicio para realizar y recibir llamadas. Puede usar Skype para realizar llamadas gratuitas de la computadora a la computadora ...

Social Media Commerce: aprenda de las cuentas de Twitter Stellar: dummies

Social Media Commerce: aprenda de las cuentas de Twitter Stellar: dummies

En las redes sociales, como en muchas cosas, puedes aprender mucho estudiando a los demás. Aquí hay dos cuentas de Twitter que vale la pena ver. Observar su calidad y diferentes estilos vale más que un vistazo. Ambos representan grandes empresas, pero ambos son impulsados ​​por el servicio al cliente: Kathy Ireland: Un ejemplo de un empresario brillante es @kathyireland ...

Selección del editor

Cómo agregar una imagen a su aplicación de Android: dummies

Cómo agregar una imagen a su aplicación de Android: dummies

Agregando imágenes a un Android la aplicación es simple: arrástrelos desde la carpeta donde están almacenados a la carpeta src / main / res / drawable-xxhdpi, como se muestra en la siguiente figura. Para la aplicación de cambio de modo silencioso, necesita dos imágenes de timbre: apagado y encendido. Asegúrese de poner ambas imágenes en la carpeta src / main / res / drawable-xxhdpi. Cuando arrastre imágenes a ...

Cómo acceder a la libreta de direcciones para aplicaciones iOS: dummies

Cómo acceder a la libreta de direcciones para aplicaciones iOS: dummies

El marco iOS proporciona funciones que permiten que su aplicación funcione con las bases de datos que vienen con dispositivos iOS. Una de esas bases de datos es la Libreta de direcciones, que incluye personas y su información de contacto. Los dispositivos iOS también proporcionan una aplicación Contactos que permite a los usuarios administrar esta base de datos agregando nuevos contactos, actualizándolos, eliminándolos ...

Manejo de eventos de control remoto en Samsung SmartTV Application Development - dummies

Manejo de eventos de control remoto en Samsung SmartTV Application Development - dummies

Códigos de control remoto son mapeado en códigos JavaScript que cambian el foco entre los elementos, asignando un proceso apropiado a cada uno de los eventos clave registrados. Consulte la siguiente lista de valores de clave registrados para una aplicación de pantalla completa: KEY_VOL_UP KEY_VOL_DOWN KEY_MUTE KEY_TOOLS KEY_INFO KEY_EMODE KEY_DMA KEY_MENU KEY_SOURCE KEY_PRECH KEY_FAVCH KEY_CHLIST KEY_DMA KEY_TTX_MIX KEY_GUIDE KEY_SUBTITLE KEY_ASPECT ...

Selección del editor

Agregue un nuevo párrafo en una diapositiva de PowerPoint 2007 - Dummies

Agregue un nuevo párrafo en una diapositiva de PowerPoint 2007 - Dummies

Para agregar un nuevo párrafo a una diapositiva con el esquema de PowerPoint que aparece en la pestaña del esquema de PowerPoint, mueva el punto de inserción al final del párrafo que desea que siga el nuevo párrafo y luego presione Entrar. PowerPoint crea un nuevo párrafo en el mismo nivel de esquema que el párrafo anterior ...

¿Qué hay de nuevo en Microsoft Outlook 2016? - Dummies

¿Qué hay de nuevo en Microsoft Outlook 2016? - Dummies

La versión de Outlook 2016 se centra principalmente en eliminar la confusión de la interfaz de usuario y simplificar su flujo de trabajo. Microsoft Outlook es el cliente de correo electrónico empresarial más favorecido del mundo. La aplicación ya ofrece una excelente integración con contactos, calendarios, notas, tareas y, por supuesto, correo electrónico. Outlook 2016 se centra en eliminar la confusión de la interfaz de usuario y simplificar el flujo de trabajo. Algunos de los nuevos ...

Agregue una nueva diapositiva a su presentación de PowerPoint 2007 - Dummies

Agregue una nueva diapositiva a su presentación de PowerPoint 2007 - Dummies

Puede agregar una nueva diapositiva de PowerPoint a su presentación de muchas maneras cuando está trabajando con el esquema de PowerPoint. Esta lista muestra los métodos más populares para agregar una nueva diapositiva a su presentación: Promueva el texto existente: Promueva un párrafo existente al más alto nivel. Este método divide una diapositiva en dos diapositivas. Promocione ...