2012-02-06 11 views
28

Tengo una subclase UIViewController que creé anteriormente que tenía sus controles establecidos en un archivo XIB.Uso del guión gráfico de XCode para instanciar el controlador de vista que usa XIB para su diseño

Me gustaría usar este controlador de vista en un guión gráfico ahora, pero parece que aunque puedo indicar el nombre de clase de un controlador de vista en el guión gráfico, no puedo decir que cargue el XIB.

Prefiero no mover todo, desde el XIB al guión gráfico, pero mantenerlo en su XIB por separado.

¿Cómo puedo obtener este UIViewController en el guión gráfico para cargar mi XIB?

Respuesta

49
  1. Eliminar la vista contenida por el controlador de vista en el guión gráfico.

  2. posteriormente facilitar a la vista mediante la configuración de un archivo semilla con el mismo nombre que la vista clase controlador. Por ejemplo, si la clase del controlador de vista se llama MyViewController, asigne un nombre a su archivo xib MyViewController.xib.

EDITAR Tenga en cuenta que la semilla Swift 5 empezó a romper esta técnica, ya que destroza el nombre del archivo .xib que está buscando. Ver mi respuesta aquí para soluciones: https://stackoverflow.com/a/25539016/341994 Básicamente, este nombre coincidente fue roto en iOS 8, pero luego Apple se arrepintió y lo arregló para que funcione de nuevo en iOS 9.

+0

¿Cómo hace esto que el controlador de vista cargue el NIB? – user1175914

+4

¡Pruébalo! Luego aprenda cómo los controladores de vista cargan plumillas leyendo mi libro: http://www.apeth.com/iOSBook/ch19.html – matt

+0

@ user1175914 La implementación predeterminada de UIViewController llama al XIB nombrado con el nombre de clase. Por lo tanto, si el tiempo de ejecución de ObjC no encuentra un controlador de vista en el guión gráfico, debe llamar de manera predeterminada al NIB como de costumbre. O puede proporcionar su propia implementación de carga de NIB llamando a loadNibNamed: o algo. – KPM

Cuestiones relacionadas