2012-05-07 13 views
7

initWithNibName en iOS es inteligente: hace cosas como cargar automáticamente diferentes NIB para iPad en lugar de iPhone (aunque muchas personas no lo saben, ¡NO ESTÁ DOCUMENTADO en UIViewController.initWithNibName!).¿Cuáles son las reglas para la coincidencia de nombre de archivo initWithNibName?

¿Pero qué más puede hacer? Los únicos documentos de Apple que he encontrado para este explican que:

  1. Será buscar y encontrar archivos con ~ ~ ipad o iphone en el final del nombre
  2. de Apple implica que sigue las reglas para el nombre de archivo de imagen de ajuste automático de

Pero no hay relación con las reglas de coincidencia de imágenes, y no puedo encontrar ningún documentos explícitos para cualquiera :(

reglas pueden incluir:. "se obtiene una SEMILLA diferente para la retina si pon @ 2x al final del nombre de archivo "(no tengo idea si esto funciona).

Lo que realmente estoy buscando es una lista de las reglas que se utilizan. Ahorraría una gran cantidad de códigos, repetidos en casi todas las aplicaciones que escribo, si pudiera hacer un mayor uso de su nombre inteligente (por ejemplo, si tienen una "pluma de paisaje de carga vs. carga retrato plumín")

+0

¡Gran pregunta!Ni siquiera sabía acerca de la coincidencia de '~ iphone' y' ~ ipad', ¡ya que Apple no parece hacer uso de esto en su propio código de plantilla! Estaré viendo esta pregunta! – mbm29414

Respuesta

2

Para responder a su pregunta (principal), estas son las reglas de juego nombre de archivo en initWithNibName:

... sin embargo, si no se especifica un nombre de semilla, y no se sobreescribe el método loadView en su subclase personalizada, el controlador de vista busca para un archivo de punta usando otros medios. Específicamente, busca un archivo de punta con un nombre apropiado (sin la extensión .nib) y carga ese archivo de punta siempre que se solicite su vista. Específicamente, se ve (en orden) para un archivo plumín con uno de los siguientes nombres:

  1. Si el nombre de vista clase controlador termina con la palabra “Controller”, como en MyViewController, se busca un archivo nib cuyo nombre coincide con el nombre de clase sin la palabra "Controlador", como en MyView.nib.
  2. Busca un archivo de punta cuyo nombre coincida con el nombre de la clase de controlador de vista . Por ejemplo, si el nombre de clase es MyViewController, busca un archivo MyViewController.nib.

De la documentación del UIViewController bajo nibName

Pero hay más ... En realidad, el NSBundle tienen algunas reglas bastante inteligentes para localizar recursos en su interior. Here is the documentation page describing these rules (ver: Recursos específicos del dispositivo en iOS).

Lo que nos trae to this page que describe todos los modificadores (y el patrón básico) que se pueden aplicar a los recursos del paquete (este es el enlace que mencionas con respecto a la coincidencia de nombre de archivo de imagen).

+0

Entonces ... leyendo esos enlaces ... ¿NO hay reglas específicas para los archivos NIB? Heredan la regla "básica" para todos los recursos (enlace 1), pero NO tienen reglas adicionales (enlace2), ¿correcto? – Adam

+0

Sí, eso sería correcto. Una cosa más que podría agregar es la carga 'inteligente' de los archivos semilla basados ​​en la localización. Dado que este es un tema realmente interesante, cualquiera que pueda agregar más información sería realmente bienvenido. – Alladinian

Cuestiones relacionadas