2011-12-07 26 views
5

Cuando estoy programando una aplicación universal, digamos que tengo una IBAction así:Programación de una aplicación universal en IOS

(IBAction)magicCode:(id)sender { 

    textField1.text = "TEST"; 

} 

¿Es necesario crear una nueva IBAction para cada vista (iPad y iPhone). No puedo tener textField1 dos veces en el archivo de encabezado, así que me pregunto cómo lo hacen todos los demás. ¿Tengo que poner un campo de texto en la aplicación de iPhone con un nombre diferente al de la aplicación para iPad? ¿O hay alguna otra forma en que todos los demás están haciendo esto?

+0

En caso de que realmente esté haciendo esto, si nombra elementos 'textField1' etc., entonces se está preparando para un mundo de dolor. Use nombres de variables descriptivos para que sea obvio de inmediato qué es qué. De lo contrario, terminarás confundiéndote y haciendo tu vida mucho más difícil de lo que debe ser. – Jim

+0

@Jim gracias, pero esto es solo un ejemplo. Sigo los estándares convencionales de nombres para nombrar mis objetos. – ios85

Respuesta

3

No, puede tener el mismo IBAction y IBOutlet en un UIViewController que trata campos de texto en dos Nib diferentes (uno para iPhone y otro para iPad). Ese es el punto de separación entre View Controller y Views en la arquitectura MVC.

Simplemente use el mismo UIViewController como Propietario del archivo en ambos Nibs y realice todas las conexiones IBOutlet e IBAction apropiadas y todo funcionará.

+0

Eso es "Propietario del archivo", no "Administrador de archivos". – Jim

+0

@Jim, gracias. respuesta corregida –

4

Necesito crear una nueva IBAction para cada vista (iPad y iPhone).

En primer lugar, las acciones se suelen incluir en los controladores de vista, no en las vistas. Creo que eso es probablemente lo que querías decir, pero señalo la diferencia porque he visto a mucha gente confundirse sobre este punto.

Cuando está creando una aplicación universal, es decir, una sola aplicación que adapta su UI al dispositivo (iPad o iPhone/iPod Touch) en el que se ejecuta, una estrategia común es proporcionar diferentes diseños de vista que mejoren uso del tamaño de pantalla disponible, pero para usar los mismos controladores de vista. Entonces, por ejemplo, supongamos que tiene una aplicación con una interfaz maestro/detalle. En dispositivos pequeños, primero debe presentar la parte maestra de la interfaz, y cuando el usuario elige algo, debe mostrar la parte detallada de la interfaz. En un iPad, con su pantalla más grande, mostraría las interfaces maestra y detallada simultáneamente en una vista dividida. Comparando los dos, es probable que las vistas sean diferentes, y la forma en que se presentan los controladores de vista es diferente, pero los controladores de vista en sí mismos deben permanecer iguales. Esto es algo bueno, ya que gran parte del trabajo de creación de una aplicación se destina a la creación de los controladores de vista.

Si su aplicación es similar a la que describí (o si puede hacerlo similar), entonces no, no necesita acciones separadas para iPad y iPhone porque usará los mismos controladores de vista en ambos casos. Sin embargo, puede haber momentos en los que el comportamiento de la aplicación en los dos dispositivos sea lo suficientemente diferente como para que tenga sentido tener controles de vista específicos del iPhone y del iPad. Es posible que aún pueda usar las mismas acciones derivando cada una de ellas de una clase principal común que contenga las acciones. Si no, necesitarás que cada clase implemente sus propias acciones.

Cuestiones relacionadas