2010-11-24 13 views
6

Ich möchte meine eigenen Container-View-Controller, z. B. so etwas wie UINavigationController oder UITabBarController erstellen. Docs sagen, ich sollte das nicht tun, aber warum nicht? Navigation und Tabbar Container sind gute Beispiele dafür, dass so etwas möglich ist und wirklich gut funktioniert. Ich verstehe auch, dass das iPhone einen kleinen Bildschirm hat und die Leute es nicht durch Navigationstasten usw. durcheinander bringen sollten, aber auf einem iPad gibt es viel Platz und die Aufteilung auf viele View-Controller würde uns großartige Möglichkeiten bieten.Benutzerdefinierte Container Ansicht Controller

Ich habe das Gefühl, dass Apple solche API noch nicht hinzugefügt hat, aber sie werden. Vor ein paar Tagen haben sie Dokumente über iPad-spezifische Controller hinzugefügt (yeah, container) und sie haben Texte zu etwas weniger Verbotenen modifiziert.

Wie auch immer ... welche Probleme kann ich haben, wenn ich versuche, zwei oder mehr View-Controller auf einem Bildschirm zu verwenden? Ich weiß, dass nur einer von ihnen Ereignisse wie Orientierungsänderung oder Warnung bei niedrigem Speicherzustand erhält, daher muss ich diese Ereignisse an enthaltene VCs weitergeben. Ich habe Angst vor der Kompatibilität mit zukünftigen Versionen von iOS, denn wenn sie neue Ereignisse hinzufügen, werden enthaltene VCs keine Standardaktionen ausführen, die von UIViewController übernommen wurden. Noch etwas? Denkst du, dass meine App von Apple abgelehnt wird? Vielleicht gibt es eine andere Möglichkeit, einige Ansichtselemente auf jedem Bildschirm persistent zu haben, ohne viel gleichen Code in jede VC zu kopieren?

Vielen Dank im Voraus.

Antwort

2

Das Unterklassieren von UINavigationController oder UITabBarController ist eine hervorragende Möglichkeit, Probleme mit der Gerätedrehung zu behandeln, aber ich würde nicht empfehlen, das speziell für die Freigabe von Teilansichten von mehreren View-Controllern zu tun.

Vielleicht Unterklasse UIViewController ist, was Sie suchen. Wenn die Ansicht dann geladen ist, können Sie Ihre freigegebenen Ansichten von einer Feder laden und die Ausgänge in Ihrer UIViewController-Unterklasse definieren und Ihrer Unterklasse zusätzlichen unterstützenden Code für die Behandlung der Ereignisse hinzufügen. Ich habe dies selbst getan, um eine Statusaktualisierungsnachricht hinzuzufügen, die auf den Ansichten meiner View-Controller angezeigt werden soll.

+0

Ich stimme zu, Apple sagt nicht, dass Sie nicht benutzerdefinierte Container-Controller erstellen sollten, nur dass UINavigationController und UITabBarController sind nicht wirklich für Unterklasse gebaut und Ergebnisse können seltsam sein, wenn Sie es versuchen. –

+0

Sie müssen diese im Grunde ableiten, um Autorotation in einer App arbeiten zu lassen, die sie verwendet, und die Dokumente warnen nicht davor, eine Unterklasse zu erstellen, aber ich glaube nicht, dass er für das, was er versucht, benötigt. – spstanley

+0

Ja, es ist möglich, zwei VCs zu haben. Ich habe getestet und habe Bildschirm erfolgreich in zwei Teile geteilt: Tasten von jedem Teil wurden von verschiedenen VCs behandelt. Alles hat gut funktioniert, einschließlich Animationen usw. Ich habe nur Angst vor Nebenwirkungen. Apple muss einen Grund haben, warum sie nicht mehrere VCs auf einem Bildschirm verwenden dürfen. Ereignisse können problematisch sein, aber ich denke, ich könnte damit umgehen. Ich frage mich, ob es andere Probleme geben könnte. – broot

Verwandte Themen