Tengo un montón de problemas al agregar dinámicamente subvistas a un UIScrollView. La vista de desplazamiento funciona bien con el contenido creado en una NIB, pero dado que las subvistas que se mostrarán dependen de los datos de mi aplicación (una mezcla de imágenes, etiquetas, botones de opción, etc.) necesito poder crearlos y visualizarlos dinámicamente.Subvistas añadidas dinámicamente en un UIScrollView que no aparece
De acuerdo con todo lo que he leído, parece bastante sencillo en varios sitios y en la documentación de Apple. En viewDidLoad del controlador de vista, he añadido el código siguiente,
UILabel *testLabel = [[UILabel alloc] init];
[testLabel setFrame:CGRectMake(50, 50, 100, 40)];
[testLabel setText:@"My Test label"];
[scrollView addSubview:testLabel];
[testLabel release];
La etiqueta no aparecerá en la vista de desplazamiento en absoluto, pero si añado el testLabel a self.view, entonces aparece (pero no en el contenido de desplazamiento obviamente). Incluso intenté agregar el código a viewDidAppear en caso de que no entendiera el orden de los eventos sin suerte.
Cuando revisé el depurador, noté que la dirección de la vista de desplazamiento es 0x0, lo que supongo que es nulo por alguna razón que explicaría por qué no funciona. Estaba bajo el supuesto de que si conectaba este puntero scrollView a la vista de desplazamiento real en IB, se le asignaría automáticamente la dirección correcta. ¿Es esto incorrecto? Si este es el caso, ¿cómo hago para obtener la dirección de la vista?
- ACTUALIZACIÓN -
Gracias por todo el comentario. Revisé todo lo que todos sugirieron y sin dudas todo fue correcto. No necesité establecer el tamaño del contenido ya que tenía otras etiquetas ficticias (para probar que el desplazamiento funcionaba) en el NIB. Pero lo recordaré para más adelante :-)
¡Curiosamente, sin embargo, después de revisar el código nuevamente y no hacer ningún cambio, lo ejecuté de nuevo y simplemente funcionó! No sé por qué, pero voy a publicar la razón por la que si alguna vez lo averigüe ...
¿Está llamando [super viewDidLoad] primero? – Colin
¿Podría publicar más código?En particular, estoy interesado en a) cómo ha inicializado la instancia de UIScrollView, yb) el punto en ViewController padre donde ha adjuntado scrollView a self.view. ¡Gracias! –
@AsimIhsan No creé dinámicamente la vista de desplazamiento, solo las subvistas. Creé la vista de desplazamiento dentro de un UIViewController usando Interface Builder y la configuré allí porque no he podido hacer que funcione de otra manera. – richard