Estoy tratando de organizar todo y crear una jerarquía de vistas para mi aplicación. Entonces, por ejemplo, quiero crear una vista personalizada para mostrar texto, otra vista personalizada para mostrar el progreso y luego usar todas esas vistas en la vista principal creada con Plantilla de aplicación basada en vista.UIView personalizado desde el Creador de interfaces
sé cómo crear mediante programación que - se crea UIView
subclase, implementar el método drawRect, colocar un vacío UIView
en Interface Builder y el azar es Clase a mi clase personalizada. Mi problema es que quiero crear esas vistas personalizadas en Interface Builder en lugar de programáticamente.
Hasta ahora hemos creado UIViewController
controlador con el archivo XI ter y en viewDidLoad
método de vista del controlador de la plantilla que crear esa instancia del controlador vista personalizada y añadir que es vista como una vista secundaria de ese vacío UIView
añadido en Interface Builder (lo mismo cambiaría la Clase en el enfoque programático).
Funciona, pero es más un truco para mí y es difícil para mí creer que no hay un mejor método donde podría agregar esas vistas personalizadas en el constructor de interfaz sin tener que implementar el método viewDidLoad
y crear controladores y agregue sus puntos de vista dentro de ese método.
Hmm .. Digamos que tengo 4 XIB en mi proyecto - 2 XIB de plantillas de aplicaciones basadas en la vista "estándar": MainWindows.xib y TestViewController.xib. Ahora, para mantener las cosas limpias, quiero crear 2 vistas adicionales: cada vista en otro XIB: CustomTextView.xib y CustomProgressView.xib. Añado UILabel y UIButton al primero y UILabel UIProgressView al segundo. Ahora quiero agregar esas dos vistas personalizadas a mi vista TestViewController.xib. ¿Cómo hago eso (aparte de una forma en que lo hice y usando el diseño XIB no la subclase UIView dibujando todo en drawRect)? – shw
ok, creo que te tengo. Si CustomTextView y CustomProgressView son vistas o lo amplían, debes agregar UIView a tu vista principal, por ejemplo, mainWindow, y en el inspector de identidad (la cuarta pestaña en el inspector) deberías cambiar de UIView. a tu clase (CustomProgressView por ejemplo). – Ratinho
Ok, pero para eso tengo que crear una clase que sea una subclase de UIView; de lo contrario, CustomTextView no estará visible en el campo Clase. Si lo hago, ¿cómo lo "conecto" con el archivo CustomTextView.xib que creé? Me las arreglé para anular el método initWithCoder, cargar ese xib usando el método '[NSBundle loadNibNamed]' y agregar la primera vista que regresa como una subvista de esa subclase UIView pero todavía se siente como piratería y como debería haber una mejor manera de hacerlo. – shw