Sto riscontrando un sacco di problemi nell'aggiunta dinamica di subviews a un UIScrollView. La vista di scorrimento funziona bene con il contenuto creato in un NIB, ma poiché le sottoview da visualizzare dipendono dai dati nella mia applicazione (una combinazione di immagini, etichette, pulsanti di opzione, ecc.) Devo essere in grado di crearli e visualizzarli dinamicamente.Non è stato visualizzato il sottoview aggiunto in modo dinamico in un UIScrollView
In base a tutto ciò che ho letto, sembra piuttosto semplice su vari siti e nella documentazione di Apple. Nel viewDidLoad del controller della vista, ho aggiunto il seguente codice,
UILabel *testLabel = [[UILabel alloc] init];
[testLabel setFrame:CGRectMake(50, 50, 100, 40)];
[testLabel setText:@"My Test label"];
[scrollView addSubview:testLabel];
[testLabel release];
L'etichetta non apparirà nella visualizzazione di scorrimento a tutti, ma se aggiungo il testLabel a self.view, allora sembra (ma non in il contenuto a scorrimento ovviamente). Ho anche provato ad aggiungere il codice per viewDidAppear nel caso in cui avessi frainteso l'ordine degli eventi senza fortuna.
Quando ho controllato il debugger, ho notato che l'indirizzo della vista di scorrimento è 0x0 che presumo significhi il suo null per qualche motivo che spiegherebbe perché non funziona. Ero convinto che se collegassi questo puntatore a scrollView alla visualizzazione a scorrimento reale in IB, sarebbe stato automaticamente assegnato l'indirizzo corretto. È sbagliato? Se questo è il caso, come faccio a ottenere l'indirizzo della vista?
- UPDATE -
Grazie per tutto il feedback. Ho controllato tutto come tutti hanno suggerito ed era certamente tutto corretto. Non avevo bisogno di impostare la dimensione del contenuto perché avevo alcune altre etichette fittizie (per verificare che lo scorrimento funzionasse) nella NIB. Ma ricorderò che più tardi :-)
È interessante notare che, dopo aver controllato di nuovo il codice e non aver apportato alcuna modifica, l'ho eseguito di nuovo e ha funzionato! Non so perché, ma io vi posterò la ragione se mai capirlo ...
Stai chiamando [super viewDidLoad] per primo? – Colin
Potresti inserire più codice?In particolare, mi interessa a) come hai inizializzato l'istanza di UIScrollView e b) il punto nel ViewController principale in cui hai collegato scrollView a self.view. Grazie! –
@AsimIhsan Non ho creato dinamicamente la vista di scorrimento stessa, solo le sottoview. Ho creato la vista di scorrimento all'interno di un UIViewController usando Interface Builder e l'ho installata lì poiché non sono stato in grado di farlo funzionare in un altro modo. – richard