ipad + SDK4: split view based application

cropfaktor

cropfaktor

Aktives Mitglied
Thread Starter
Dabei seit
18.01.2008
Beiträge
1.148
Reaktionspunkte
119
Seufz, iPhone-Programmierung läuft recht gut und es geht dort in die Feinheiten. Denke noch ein gutes halbes Jahr und die erste App fürs Unternehmen läuft richtig gut.

iPad-Programmierung hakt an einer scheinbar diffizilen Geschichte: Ich habe mir leider aus der letzten 3.2-SDK-Installation kein "Split View-based application"-Beispiel abgespeichert. Hat das jemand und kann es mir zur Verfügung stellen?

Die mir vorliegende Nonsensliteratur bezieht sich zum einen auf das 3.2er-SDK und die wenigen Autoren, die es mit einer window-based-Application zeigen, haben es dann doch nicht selbst gemacht. Die Beispiele funktionieren nicht. Totaler Müll mal wieder.

Ich werde zwar selbst weiter experimentieren, aber eine gute Erklärung dazu habe ich nicht gefunden.

Selbst wenn ich mit New-File eine UIView-Controller-Subclass (UITableViewController) einfüge und die Klasse auf mein Delegate einstelle, habe ich im Attributes-Inspektor keine Auswahl.

Total verwirrend und mit Büchern nicht herauszubekommen.

Danke für Tipps und Infos
Andi
 
Das gibt es doch auch in Xc4 ?

Was genau ist Dein Problem?

Alex
 
Mein Problem ist, dass ich das mal über eine Window-based-Application hinbekommen will, damit ich auch weiß, was da überhaupt gemacht wird.
Der Code ist mir klar, mir macht der Interface Builder Schwierigkeiten, weil ich einfach nicht raffe, wie da was mit wem verbunden wurde. Das Prinzip ist mir nicht einsichtig.
Bei mir erscheint nur ein schwarzer Bildschirm, mehr nicht.

Seufz.
Andreas
 
Ach so. Per Code oder per IB?

Alex
 
Per IB.
Wenn ich mir die Vorlage vom SDK4 ansehe, dann habe ich damit ein inhaltliches und ein konzeptionelles Problem.
Ich habe ein MainWindow.xib, dass Nonsens ist. In der eigentlichen App taucht das Fenster nirgendwo auf. Da kann ich 1000 Labels drauf ziehen, die erscheinen nirgendwo.
Dann habe ich ein DetailView.xib, dessen View das eigentliche Hauptfenster, spricht der Content-Bereich ist.
Wo dann nun das Navigation.view ist, erschließt sich mir nicht.

Sorry, das blicke ich einfach nicht. Für was ein view in MainWindow.xib was nichts macht und wo ist das Navigation.view beheimatet?

???
Andreas
 
ahhh, meine Experimente fruchten und in der Tat: das view von MainWindow.xib ist Nonsens.
2 neue Content View Controller müssen via UIview-Controller-Subclass angelegt werden.

Warum der zweite dann im Interface-Builder stets quer angezeigt wird, ??? Aber das bekomme ich auch noch raus. Wie soll man da ein Design entwickeln, wenn man nur quer sieht?

How To kommt gleich.
Andreas
 
Und hier nun ein How-To, wie man unter SDK4 als Anfänger eine Split-View-App hinbekommt, ohne die vorgefertigte von Xcode nehmen zu müssen:


Split-View-Handmade

1. Neues Xcode-Projekt: Window-based Application "Gesplitter"; Device Family = iPad.

2. Klick auf MainWindow.xib

3. Aus der Library einen Split View Controller "UISplitViewController" auf das Dock, nicht ins Fenster, ziehen. Ergebnis ist eine drei geteilte Ansicht. Oben der "Root View Controller", eine UINavigationBar. Hier steht die Überschrift der Navigationsspalte. Die linke schmale "View Controller"-Ansicht ist der Navigationsbereich und kann mit einem beliebigen View, jedoch vornehmlich mit einem UiTableView, versehen werden. Rechts ist der Content-Bereich, der wiederrum jedes beliebige View repräsentieren kann.

4. Jetzt braucht es eines Outlets. Wechsel zu GesplitterAppDelegat.h (Headerdatei) und dort den folgenden Code einfügen: IBOutlet UISplitViewController *meinSplitter;

5. Erneuter Klick auf MainWindow.xib

6. Rechter Mausklick auf "Gesplitter App Delegate" und von dort aus eine Verbindung von Outlets-meinSplitter zum "Split View Controller" im Dock ziehen. Hier wurde der SplitViewController mit der vorher definierten IBOutlet-Variablen "meinSplitter" verbunden.

7. Jetzt muss im Prinzip das SplitView Teil des Window (MainWindow.xib) werden. Also dafür in die Codedatei GesplitterApppDelegate.m wechseln und vor die Zeile [self.window makeKeyAndVisible]; die Zeile: [self.window addSubview: meinSplitter.view]; setzen.

8. Jetzt bedarf es des sogenannten Navigation-Controllers, also der Navigationsbereich links. Auch dieser braucht eine Header- und eine Codedatei, sowie eine Interface-Builder-Datei (.xib). Diese bekommt man via File-New-New File und dort dann UIViewController subclass wählen. Als nächstes wählt man "UiTableViewController" als Subclass und klickt sowohl "Target for iPad" als auch "With XIB for user interface" an. Name der Klasse "linkeSeite".

9. In der Codedatei "linkeSeite.m" sind bereits alle notwendigen Table-Delegate-Methoden angelegt, Also mit einem Klick dorthin wechseln und bei "//Return the number of sections" eine "1" anstelle der "0" angeben, bei "//Return the number of rows in the section" eine "7" und bei "Configure the cell.." testweise diesen Code:
// Configure the cell...
//Ausgabe der Reihen mit ihrer jeweiligen Nummer
cell.textLabel.text = [NSString stringWithFormat:mad:"Dies ist die Zeile: %i!", indexPath.row+1];
return cell;

10. Klick auf MainWindow.xib

11. Dort auf den linken (schmalen) "View Controller" klicken und danach rechts im Inspector bei "Custom Class – Class" die Klasse auf "linkeSeite" einstellen. Jetzt ist der eine View für den Split-View-Controller angelegt.

12. Im Prinzip die Schritte 8, 10 und 11 mit kleinen Änderungen.

13. Also "File - New – New File" und dort wieder "UIViewController subclass" auswählen. Als nächstes aber statt "UITableViewController" (würde aber auch gehen) eben "UIViewController" wählen und klick bei "Target for iPad" als auch bei "With XIB for user interface". Name der Klasse: "wertigerHauptbereich".

14. Erst einmal Klick auf "wertigerHauptbereich.xib" und dort ein Label ins Fenster ziehen. Damit man beim Programmstart wenigstens etwas sieht.

15. Jetzt Klick auf "MainWindow.xib".

16. Klick auf den rechten (breiten) View Controller und danach rechts im Inspector bei "Custom Class – Class" die Klasse auf "wertigerHauptbereich" einstellen.

Jetzt nur noch "Run" und siehe da, es geht.
 
drehen

Hallo Cropfaktor
Das habe ich mir auch gedacht. Ich komme von der WIndowsprogrammierung und bin mich gerade am einarbeiten in ipad Programmierung.

Hier meine Frage: Ich habe deinen COde ausprobiert. Aber das GUI dreht nicht, wenn ich auf "links drehen" klicke im Simulator.

Was mache ich da noch falsch?

Danke und Gruss
CHicco80
 
Da gibt es doch eine Methode, die muesste "shouldAutorotate..." oder so lauten.
Steht da "return = YES"

Sorry, schreibe von unterwegs aus dem Hirn.

Viele Gruesse
Andreas
 
hmm

Danke für deine Antwort, aber klappt leider noch nicht...irgendwas mache ich falsch. Hab die Rotation Funktion aus einem anderen Projekt kopiert...aber klappt nicht.
Hast du ein Musterprojekt?
 
Zurück
Oben Unten