Frage

Ich habe ein wenig mit meiner ersten echten iPhone -Anwendung zu kämpfen und wollte einige Ratschläge dafür bekommen, wie dies strukturiert werden sollte. Ich suche nach Best Practices im Hinblick auf das Erstellen von UI -Komponenten und das Zusammenfahren, um den Anwendungsfluss zu erstellen (erstellen Sie Ansichten/Controller programmgesteuert im Vergleich zu Schnittstellenbuilder usw.).

Überblick:
Ich muss eine "Login" -Ansicht auf den Start der Anwendung anzeigen.
--Show "Anmelden" anzeigen, wenn sie auf die Schaltfläche Anmelden klicken.

Sobald Sie sich angemeldet haben, habe ich einen TabBarController, der 4 Ansichten lädt. Diese 4 Ansichten müssen Unteransichten laden (Master-Detetails wie).

Meine Frage ist:
1) Was ist der beste Weg, um diese Navigationsstruktur zusammenzusetzen? Erstellen Sie jede Ansicht als .xib mit einem entsprechenden ViewController? Wie sind diese zusammengeklebt?

2) Wie soll ich die Login/Anmeldung -Navigation behandeln, zu Beginn sollte keine Taballeiber angezeigt werden, muss sie jedoch nach der Authentifizierung des Benutzers benötigen.

Bonuspunkt) Gibt es dokumentierte Best Practices für solche Dinge? Ich habe einen praktikablen Code zusammengehackt, aber ich bin sehr verloren gegangen und möchte über die richtige Art und Weise anfangen.

Ich weiß, dass dies ein wenig verwirrend sein kann, alles und jede Hilfe wird sehr geschätzt.

Bearbeiten: Für die Anmeldeansicht oben in der Registerkartenleiste habe ich diese ziemlich einfach verwendet.

LoginViewController *loginViewController = [[LoginViewController alloc] init];
[loginViewController initWithNibName:@"Login" bundle:nil]; 
[self.tabBarController presentModalViewController:loginViewController animated:YES];
War es hilfreich?

Lösung

Wenn Sie eine neue Registerkartenleistenanwendung in Xcode erstellen, sind Sie so ziemlich bereits so eingerichtet, wie Sie es möchten. Es gibt ein Haupt -XIB, das Ansichten für jede Registerkarte von separaten XIB -Dateien lädt. Sie haben einen XIB pro Tab. Beachten Sie, dass Sie bei der Änderung von Typen oder Registerkarten den richtigen Ansichts -Controller -Typ sowohl im XIB mit der Registerkarte als auch in der XIB angeben müssen, mit der Sie Ihre Ansicht erstellen!

Bei der Anmeldeansicht besteht ein gängiger Ansatz darin, die Registerkartenleiste wie oben zu verwenden. In der App -Delegate -Anwendungsdidfinishlaus -Methode zeigt jedoch einen modalen Ansichtsregler, der den Anmeldebildschirm anzeigt. Der Modal Controller verbirgt die Registerkartenleiste und alles andere, bis sie fertig sind, und kann dann entlassen werden.

Andere Tipps

1) Was ist der beste Weg, um diese Navigationsstruktur zusammenzusetzen? Erstellen Sie jede Ansicht als .xib mit einem entsprechenden ViewController? Wie sind diese zusammengeklebt?

Verwenden UINavigationController und schieben Sie Ihre benutzerdefinierten Aussichten nach Bedarf auf den Navigationsstapel. Schauen Sie sich die Beispiel für Navigation Controller über Xcode an Neues Projekt Option, ein Gefühl dafür zu bekommen, wie dies funktioniert.

2) Wie soll ich die Login/Anmeldung -Navigation behandeln, zu Beginn sollte keine Taballeiber angezeigt werden, muss sie jedoch nach der Authentifizierung des Benutzers benötigen.

Richten Sie eine Ansicht für die Anmeldung ein (ich würde a verwenden UITableView mit einem Abschnitt mit zwei Zeilen für Benutzername und Passwort, aber das ist meine eigene Präferenz). Richten Sie eine zweite, separate Ansicht für Anmeldungsfelder ein (wieder würde ich a verwenden UITableView Dafür, um das Layout sauber und konsistent zu halten).

Verwenden Sie möglicherweise eine Ansichtanimation, um die Registerkarte nach erfolgreicher Authentifizierung zu übertreffen.

Bonuspunkt) Gibt es dokumentierte Best Practices für solche Dinge? Ich habe einen praktikablen Code zusammengehackt, aber ich bin sehr verloren gegangen und möchte über die richtige Art und Weise anfangen.

Am Ende werden Sie Ihr Projekt mehrmals neu schreiben - was eine gute Sache ist. Schauen Sie sich die Beispielanwendungen von Apple (verfügbar auf der iPhone ADC -Site), da diese mehrere "bewährte" Möglichkeiten enthalten, mehrere der der Verwendung zu verwenden UIKit Komponenten. Wenn Sie eine größere Anwendung zusammenstellen, halten Sie Ihr Design so einfach wie möglich und verwenden Sie so viel von Apples UI -Komponenten wie möglich. Sie können immer später anpassen.

Meiner Meinung nach sind nur Kakao -Programmierbeispiele und sehr einfache Anwendungen für eine einzelne NIB -Datei geeignet. Andernfalls sollten Sie Ihre Schnittstellenkomponenten auf mehrere Nibs verteilen. Dies bedeutet, dass jede NIB kleiner ist und diese Komponenten bei Bedarf nur nach Bedarf geladen wird. Dies verbessert die Leistung in Ihrer Anwendung und kann dazu beitragen, Ihr Programm logisch zu organisieren und das Debuggen zu erleichtern, wenn Probleme auftreten.

In meinen Tabbar -Apps verwende ich MainWindow.xib, um das Hauptfenster und das Tabbar zu enthalten, aber aus den oben genannten Gründen jede Registerkarte in eine separate NIB aufzuteilen.

Apple bietet die folgenden Richtlinien an:

Versuchen Sie beim Erstellen Ihrer NIB -Dateien, die folgenden Richtlinien im Auge zu behalten:

Entwerfen Sie Ihre NIB -Dateien unter Berücksichtigung des faulen Ladens. Planen Sie das Laden von NIB -Dateien, die nur die Objekte enthalten, die Sie sofort benötigen.

In der Haupt -NIB -Datei für eine Mac OS X -Anwendung werden nur die Anwendungsmenüleiste und ein optionales Anwendungsdelegierobjekt in der NIB -Datei gespeichert. Vermeiden Sie es, Windows- oder Benutzer-Schnittstelle-Elemente einzubeziehen, die erst nach dem Start der Anwendung verwendet werden. Platzieren Sie stattdessen diese Ressourcen in separate NIB -Dateien und laden Sie sie nach dem Start nach Bedarf.

Speichern Sie wiederholte Benutzer-Schnittstelle-Komponenten (z. B. Dokumentfenster) in separaten NIB-Dateien.

Speichern Sie für ein Fenster oder Menü, das nur gelegentlich verwendet wird, in einer separaten NIB -Datei. Durch das Speichern in einer separaten NIB -Datei laden Sie die Ressource nur dann in den Speicher, wenn sie tatsächlich verwendet wird.

Für weitere Informationen können Sie besuchen:

http://developer.apple.com/iphone/library/documentation/cocoa/conceptual/loadingresources/cocoanibs/cocoanibs.html#//apple_ref/doc/uid/10000051i-ch4

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top