Das Einfügen des Widgets / der Ansicht in eine separate .xib-Datei funktioniert und ist insbesondere dann geeignet, wenn Sie dieselbe Ansicht von mehreren Ansichts-Controllern aus referenzieren möchten.
Manchmal möchten Sie jedoch die zusätzliche Ansicht / das zusätzliche Widget im selben Storyboard sehen, und dies ist möglich. So geht's:
Wählen Sie Ihren Ansichts-Controller in IB aus (klicken Sie auf den schwarzen Balken unter der Ansicht) und ziehen Sie eine UIView aus der Objektbibliothek in den schwarzen Balken:
Wenn sich eine Ansicht in der schwarzen Leiste befindet, wird sie wie jede andere Ansicht in IB instanziiert, jedoch erst dann zu Ihrer Ansichtshierarchie hinzugefügt, wenn Sie dies im Code tun. Ändern Sie die Klasse der Ansicht bei Bedarf entsprechend Ihrer eigenen Unterklasse:
Sie können es wie jede andere Ansicht an Ihren View Controller anschließen:
Die hinzugefügte Ansicht wird in Ihrer Dokumentübersicht angezeigt, und Sie können dort auch Aktionen und Referenzen verknüpfen:
Das verbleibende Problem besteht nun darin, dass Sie die Ansicht nicht sehen können, egal wie oft Sie versuchen, zu klicken oder zu doppelklicken, was den gesamten Zweck, sie in dasselbe Storyboard zu legen, zunichte machen würde. Glücklicherweise gibt es zwei Problemumgehungen, die mir bekannt sind.
Die erste Problemumgehung besteht darin, die Ansicht von der schwarzen Leiste zurück in die Ansicht Ihres Ansichtscontrollers zu ziehen, sie zu bearbeiten und sie dann wieder in die schwarze Leiste zu ziehen, wenn Sie fertig sind. Dies ist mühsam, aber zuverlässig.
Die andere Problemumgehung ist schwieriger, aber ich bevorzuge sie, weil ich so alle meine Ansichten gleichzeitig sehen kann:
Ziehen Sie eine UITableView aus der Objektbibliothek in Ihre neu hinzugefügte Ansicht.
Ziehen Sie dann eine UITableViewCell in diese UITableView.
Sobald Sie dies tun, wird Ihre Ansicht auf magische Weise nebeneinander angezeigt, aber Sie haben eine UITableView, die Sie nicht möchten. Sie können die Größe entweder auf 0x0 ändern oder sie löschen, und Ihr UIView bleibt (normalerweise) weiterhin sichtbar.
Gelegentlich wird die sekundäre Ansicht in IB wieder ausgeblendet. Sie können die obigen Schritte wiederholen, wenn Sie die UITableView gelöscht haben oder wenn sich die UITableView noch in der Hierarchie befindet. Klicken Sie einfach auf die UITableViewCell, und die Ansicht wird erneut angezeigt.
Die zweite Methode funktioniert für UIViews, aber nicht so gut für UIToolbars und ist für UIButtons nicht möglich. Die sauberste Lösung, die ich gefunden habe, wenn Sie viele verschiedene Unteransichten einschließen müssen, besteht darin, eine einzelne sekundäre UIView als Container an Ihren View Controller anzuhängen wird nie angezeigt, fügen Sie alle Ihre sekundären Ansichten dort ein und verwenden Sie den UITableViewCell-Trick, um alles sichtbar zu machen. Ich ändere die Größe meines Dummy-UITableView auf 0x0, um dies unsichtbar zu machen. Hier ist ein Screenshot, wie alles zusammen aussieht:
xib
s für Ihre View Controller separat und nicht im Storyboard erstellen ?