Zusätzliche Views im Storyboard anlegen und darauf zugreifen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Zusätzliche Views im Storyboard anlegen und darauf zugreifen

    Hallo,

    In manchen XIBs habe neben der Hauptview noch einige zusäztliche Views angelegt. Beim Laden des ViewControllers sind diese natürlich zunächst einmal nicht sichtbar (liegen ja nicht innerhalb der Hauptview) aber über ein ensprechendes Outlet dennot mit dem VC verknüft und somit ansprechbar.

    Zur Laufzeit kann ich diese Views dann ganz einfach verwenden und an irgendeiner Stelle in die sichtbare UI einbinden. Die RootView eines VCs ist z.B. eine ScrollView und zusätzliche liegen in der XIB drei weitere Views die ich erst zur Laufzeit in die ScrollView packe. Das hat den Vorteil, dass ich den Inhalt dieser 3 Views im IB bequem gestalten kann. Lägen die Views schon zur Designzeit in der ScrollView, wären diese (teilweise) nicht sichtbar.

    Geht das auch bei der Verwendung von Storyboards? Eine View lässt sich zumindest nicht direkt ins Storyboard ziehen und dort ablegen. Ich vermute auch, dass das gar nicht möglich ist. Wie soll das Storyboard wissen wann es diese zusätzliche View laden soll? Direkt zu Beginn oder erst wenn im Navi-Controller die 10-Seite erreicht ist, etc...

    Wie löst man das aber dann? Die zusätzlichen Views in eine eigene XIB legen und diese manuell laden? Möglich aber unschön: Die Views können keine Outlets des VCs verwenden (sehr umständlich) und die Teile die eigentlich zusammengehörigen (RootView und Zusatzviews) liegen an zwei verschiedenen Stellen (Storyboard und Zusatz-XIB).

    Gibt es hierfür eine saubere Lösung?
  • Du kannst zusätzliche Views einfach in die Baumansicht in der jeweiligen Viewcontroller-Szene ziehen. Allerdings hast Du dafür keine WYSIWYG-Möglichkeit zum bearbeiten. :(

    Über die Klasse UINib oder die Methode loadNibNamed:owner:options: von NSBundle kannst Du XIBs auch selber laden und deren Views einbinden. Alternativ kannst Du die Views auch in den Viewcontroller legen, und das Hidden-Flag ausschalten.
    „Meine Komplikation hatte eine Komplikation.“
  • Agenor schrieb:

    Wie löst man das aber dann?

    Ein ContainerView wäre eine Möglichkeit. Da hast du aber dann einen eigenen ViewController für den ContainerView.

    Agenor schrieb:

    Die zusätzlichen Views in eine eigene XIB legen und diese manuell laden? Möglich aber unschön: Die Views können keine Outlets des VCs verwenden

    Doch können sie. Dazu musst du nur den ViewController als File's Owner festlegen und diesen dann auch beim Laden als File's Owner angeben.