7
votes

Sous-système ajouté dynamiquement dans un Uiscrollview ne figurant pas

J'ai beaucoup de difficulté à ajouter de manière dynamique des sous-espions à un Uiscrollview. La vue de défilement fonctionne bien avec le contenu créé dans une NIB, mais car les sous-espions à afficher dépendent des données de mon application (un mélange d'images, d'étiquettes, de boutons radio, etc.) Je dois être capable de les créer et de les afficher de manière dynamique.

Selon tout ce que j'ai lu, il semble assez simple sur différents sites et dans la documentation Apple. Dans la vue ViewDidDidDidDidDidDidDidLoad, j'ai ajouté le code suivant, xxx

L'étiquette n'apparaîtra pas dans la vue de défilement mais si j'ajoute le testlabel à Self.View , alors il apparaît (mais pas dans le contenu du défilement évidemment). J'ai même essayé d'ajouter le code à ViewDidAppear au cas où j'ai mal compris l'ordre des événements sans chance.

Lorsque j'ai vérifié le débogueur, j'ai remarqué que l'adresse de la vue de défilement est 0x0 que je suppose que cela signifie son null pour une raison quelconque qui expliquerait pourquoi elle n'expliquerait pas. J'étais sous l'hypothèse que si j'étais connecté ce pointeur ScrollView sur la vue de défilement réelle dans IB, il serait automatiquement attribué à la bonne adresse. Est-ce incorrect? Si tel est le cas, comment puis-je faire l'adresse de la vue?

- mise à jour -
Merci pour tous les commentaires. J'ai tout vérifié comme suggéré tout le monde et c'était certainement tous corrects. Je n'avais pas besoin de définir la taille du contenu car j'avais d'autres étiquettes factices (pour tester que le défilement fonctionnait) dans la NIB. Mais je me souviendrai de cela pour plus tard: -)

intéressant, cependant, après avoir vérifié le code à nouveau et ne pas apporter de modifications, je l'ai retourné et cela vient de travailler !! Je ne sais pas pourquoi, mais je posterai la raison si je le précise jamais ...


5 commentaires

Appelez-vous d'abord [Super ViewDidDidLoad] en premier?


Pourriez-vous poster plus de code? En particulier, je suis intéressé par a) Comment vous avez initialisé l'instance UISCrollView, et b) le point de la visualisation parent de la visiteuse de parent où vous avez attaché ScrollView à Self.View. Merci!


@ASIMIHSAN Je n'ai pas créé de manière dynamique la vue de défilement elle-même, uniquement les sous-visions. J'ai créé la vue de défilement dans une uiviewontroller à l'aide de l'interface Builder et la configurez-la depuis que je n'ai pas été capable de le faire fonctionner d'autre manière.


@Colin oui il a été appelé


Richard je suis coincé dans le même problème, pouvez-vous m'aider s'il vous plaît?


3 Réponses :


3
votes

Lorsque vous utilisez ScrollView, vous devez définir la taille du contenu en faisant: xxx

Dans ce cas, la taille doit être plus grande 50,50 si vous voulez voir l'étiquette

J'espère que cela a aidé


0 commentaires

2
votes

Comme décrit dans votre question, vous travaillez avec une vision de défilement que vous avez ajoutée dans le XIB.

Lorsque vous déclarez une sortie comme iboultlet Uiscrollview * scrlvdynamiccontent;

et connectez la même page à votre visualisation de ScrollView dans Interface Builder, vous obtiendrez idéalement la visionneuse de Scroll View après que la méthode ViewDidload est appelée. < p> Donc, ce faisant quelque chose comme xxx

où vous pouvez générer la vue dynamique comme suit xxx

Assurez-vous que SCRLVDynamicContent est connecté correctement à sa sortie définie sur son propriétaire de fichier


0 commentaires

0
votes
[scrollView setFrame:CGRectMake(0,0,320,460)];
[scrollView setContentSize:CGSizeMake(100, 40)];
[self.view addSubview:scrollView];


UILabel *testLabel = [[UILabel alloc] init];
[testLabel setFrame:CGRectMake(50, 50, 100, 40)];
[testLabel setText:@"My Test label"];


[scrollView addSubview:testLabel];

[testLabel release];

0 commentaires