2011-07-12 13 views
7

Estoy creando una subclase UIControl y, por lo tanto, exponiendo programáticamente todo lo que contiene. Ahora que lo tengo listo, tengo que colocarlo varias veces en varias pantallas. Sé que no puede crear un complemento de IB para iOS, pero ¿hay alguna manera de tomar una UIView en IB y ajustarla/colocarla donde debería estar mi control, y luego configurar su propiedad de clase personalizada para que sea la subclase de mi UIControl? ? Sé que no lo veré mostrar de la manera en que realmente está en IB, pero al menos esto me permite establecer el tamaño general y la ubicación relativa a las otras cosas en la pantalla. También creé IBOutlets en mi viewController y conecté correctamente la vista en IB a ellos. Sin embargo, cuando se ejecuta, no veo ninguna personalización, y cuando configuro puntos de interrupción en initWithFrame: o loadView, nunca veo que se llame a mi código. ¿Cómo debería estar haciendo esto?Posición de conjunto de subclase de UIControl personalizada en IB para iOS

+0

qué versión de IB/Xcode estás usando? – bshirley

+0

'initWithCoder:' se invoca cuando se carga un objeto desde un plumín, alternativamente se puede anular 'awakeFromNib' – bshirley

+0

Usando Xcode 4.0.1. @bshirley, pensé que ese era el caso, así que también establecí puntos de interrupción en 'loadView', que debería llamarse en ambos casos. – jamone

Respuesta

10

Puede arrastrar una UIView en el archivo de punta y luego usar el inspector de identidad (command-opt-3) para cambiar la clase a cualquier subclase de UIView.

Usted tendrá que establecer las subclases en el código de inicialización que es llamada cuando se carga desde una punta, es decir, no en initWithFrame:. Si está codificando la integridad, ambos métodos (basados ​​en programación y basados ​​en plumillas) deben llamar a la misma inicialización.

Si lo desea, simplemente cree y addSubview: en el código de inicialización, luego implemente layoutSubviews para diseñar sus subvistas personalizadas. Se llamará esto cada vez que se cambie el tamaño de la vista, así como también inicialmente.

+0

Soy un idiota. 'loadView' no es un método en' UIView', sino en 'UIViewController'. Aparte de esto, lo tuve exactamente de esta manera – jamone

+1

d'oh - que * sería * un problema =) – bshirley

Cuestiones relacionadas