Der einfachste Ansatz besteht darin, alle View-Controller auf diese zusätzliche Ansicht aufmerksam zu machen (machen Sie die Ansicht über einen Singleton PinedViewController oder was auch immer verfügbar). Während jede Ansicht des Controllers -viewWillAppear
, gerade dies tun:
[self addSubview:[[PinnedViewController sharedController] view]];
Dies wird die Ansicht bewegen, wer gerade aktiv ist (was eine Ansicht automatisch Ihr Subview Sie von Ihrer alten Hierarchie entfernt).
Wenn das umständlich oder nicht durchführbar ist, gibt es zwei andere Optionen. Zuerst können Sie die Unterklasse UITabViewController
(ich nehme an, dass Sie das hier aus Ihrer Frage verwenden) und Ihre zusätzliche Ansicht injizieren (Größe der Inhaltsansicht ändern, um Platz zu schaffen). Dies ist nicht dokumentiert und wird nicht unterstützt. Aber es ist nicht unglaublich schwierig, wenn du nicht zu viele andere Tricks machst.
Die andere knifflige Lösung ist eine zweite UIWindow
, die Sie über das Haupt UIWindow
(oder die Größe des Haupt UIWindow
Raum für sie zu machen) schweben zu erstellen. Dies ist nur halb dokumentiert und wird auch nicht wirklich unterstützt. Dieser Ansatz kann jedoch funktionieren, wenn Sie beispielsweise versuchen, die zusätzliche Ansicht unterhalb der Tableiste zu platzieren.
Aber wenn Ihr System einfach genug ist, empfehle ich, dass Ihre View-Controller alle die fixierte Ansicht manuell verwalten. Auf diese Weise sparen Sie eine Menge Code-Spelunking und Sie müssen sich nicht auf irgendwelche nicht dokumentierten internen Ansichtshierarchien verlassen.
Ich bekomme einen Fehler mit der - (UIWebView *) webView { zurück [SharedWebView freigegeben]; } in .h – user393273
Was ist der Fehler? – TomSwift