Tab Bar mit Table View

  • Tab Bar mit Table View

    Hallo,
    ich möchte Tab Bar Application mit einen Table View erstellen und einen hellblauen Balken darüber der Edit und + hat. Nun habe ich schon eine Tab Bar Application erstellt und das FirstView durch einen UITableViewController subclass ausgetauscht. Wie bekomme ich jetzt diesen Standart Balken darüber? Außerdem möchte ich als Add Funktion das Verhalten des Kalenders. Verstehe ich das richtig, dass zuerst ein Table View von unten "Hineinfiegt" und wenn ich dann eine Zelle drücke ein zweites zur Seite reingeschoben wird? Wie bastellt man sich sowas selber?
  • Korrigiert mich Leute, wenn ich falsch liege, bin selbst noch neu.

    Also. Du hast ja schon ein TabBar App. Lösch' einfach in MainWinow.xib alle Items aus deiner TabBar. Und ersetze diese durch NavigationController. Dann hast du 'mal die schicke Leiste - Navigation Bar. Dann muss du aber noch Den Controller erstellen, eine UIViewController subclass. Es ist aber wichtig, dass du einen UINavigation Controller erstellst - für jeden Tab einen. Wichtig: Xib-file nicht vergessen! Dann, erstellt du noch eine UIViewController subclass, wieder für jeden Tab eine, aber einen UITableViewController. Dann muss du die Verbindungen im Interface Builder herstellen, dass der Navigation Controller deinen TableView lädt. Dazu ist aber wieder ein View nötig, also Xib nicht vergessen. Kannst du das?

    Das mit dem Hinzufügen, hab' ich schon mal gelesen, kann's dir aber nicht erklären

    TheFuriousLion
  • So,
    eine Tab Bar mit Table View hab ich schon mal hinbekommen. Hab da ein Video gefunden das das erklärt. Dort wurde aber am Anfang eine Window-Based Application verwendend. Nun jetzt habe ich über den Table View eine Navigation Leiste mit Titel in der Mitte. Nun gibt es ja dieses Edit und +. Bei Edit rutschen ja dann alle Eintrage nach rechts und es kommen Löschen-Symbole neben den Einträgen. Wie bekomm ich die zwei Buttons dahin? Gibt es da schon was von Apple oder muss man sich die selber basteln?
  • Also fürs Löschen (für Table View in einem UIViewController):

    Quellcode

    1. UINavigationItem *navItem;
    2. UITableView *table;
    3. - (void)viewDidLoad {
    4. [super viewDidLoad];
    5. // ...
    6. [navItem setRightBarButtonItem:self.editButtonItem];
    7. }
    8. - (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    9. [super setEditing:editing animated:animated];
    10. [table setEditing:editing animated:TRUE];
    11. }
    12. // Override to support editing the table view.
    13. - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    14. if (editingStyle == UITableViewCellEditingStyleDelete) {
    15. // Delete the row from the data source.
    16. // ...
    17. [table deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
    18. }
    19. /*
    20. else if (editingStyle == UITableViewCellEditingStyleInsert) {
    21. // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view.
    22. }
    23. */
    24. }
    Alles anzeigen


    Habe es aus meinem aktuellen Projekt entnommen. Falls noch Fragen sind, nur her damit ;)
  • So,
    Add und Remove habe ich schon hinbekommen. Nun möchte ich aber mein Add so hinbekommen, dass es sich wie beim Add vom Adressbuch verhält. Sprich ich klicke auf + und es kommt von unten ein Table View (im Style von den Einstellungen her) eingeschoben. Dann sehe ich alle Eigenschaften die ich bestimmen kann, in Zellen. Klicke ich eine an, schiebt sich ein zweites Table View von rechts ein, das dann eine Zelle hat in der ich irgendwas Bestimmtes reinschreiben kann. Wie bekommme ich sowas hin?
  • Bayer schrieb:

    So,
    Add und Remove habe ich schon hinbekommen. Nun möchte ich aber mein Add so hinbekommen, dass es sich wie beim Add vom Adressbuch verhält. Sprich ich klicke auf + und es kommt von unten ein Table View (im Style von den Einstellungen her) eingeschoben. Dann sehe ich alle Eigenschaften die ich bestimmen kann, in Zellen. Klicke ich eine an, schiebt sich ein zweites Table View von rechts ein, das dann eine Zelle hat in der ich irgendwas Bestimmtes reinschreiben kann. Wie bekommme ich sowas hin?

    View modal präsentieren, anschließend die Eingaben dem Array hinzufügen und die Table View neu laden.
  • Das ist meine erste Application, deshalb habe ich noch paar Fragen. Also ich erstelle mir jetzt ein Table View mit Navigation Bar und dann noch für die 5 Einträge 5 Table View's mit nur einer Zelle in der man schreiben kann. Muss ich mir dann 6 Controller für die 6 xib's erstellen oder kann ich irgendwie die 5 Detail Views in einen Controller packen? Und was muss ich machen damit man in einen Zelle reinschreiben kann? Und zum Schluss wie bekomme ich dann das Ganze von Unten reingeschoben?
  • Nein.
    Du brauchst nur einen weiteren TableView.
    Zum Beispiel hast du diese Daten:

    "Zelle 1" - "Table2 Zelle1"
    "Zelle 2" - "Table2 Zelle2"
    "Zelle 3" - "Table2 Zelle3"
    "Zelle 4" - "Table2 Zelle4"
    "Zelle 5" - "Table2 Zelle5"

    Der erste TableView zeigt Zelle 1 - Zelle 5 an. Wenn du dann auf eine Zelle klickst, lädst du einen weiteren TableView, je nachdem welche Zelle als erstes gedrückt wurde, dann das Datenpaar dazu.
    Wenn du also beim ersten mal Zelle 1 anklickst, kommt dann im 2. im TableView Tabelle 2 Zelle 1.

    Am einfachsten kann man das mit einer Plist machen.
    Gruß

    Robin
  • Ok,
    aber ich schaff es zurzeit einfach nicht ein Table View einfliegen zu lassen. Es soll ein Table View mit Navigation Bar sein. Muss ich jetzt zuerst wenn ich Add drücke, einen Controller aufrufen der ein View hat und in das dann von einem Table View Controller ein Table View geladen wurd und das gleiche dann auch mit einen NavigationController?
  • AR.DDev schrieb:

    Entweder modal oder mittels eines Navigation Controller.
    Ich versteh das nicht, wie meinst du das?

    Ich bekomm das einfach nicht hin. Es soll nur wenn ich auf Add drücke ein Table View mit Navigation Bar eingeschoben werden. Aber bei mir wird einfach ein normales Table View geladen, mein nib nimmt er nicht, obwohl ich es verbunden habe. Entschuldigung, dass ist meine erste Application, die ich allein erstelle. Kann mir vielleicht mal einer erklären wie genau sowas funktioniert, sprich was ich alles brauche?
  • Bayer schrieb:

    AR.DDev schrieb:

    Entweder modal oder mittels eines Navigation Controller.
    Ich versteh das nicht, wie meinst du das?

    Ich bekomm das einfach nicht hin. Es soll nur wenn ich auf Add drücke ein Table View mit Navigation Bar eingeschoben werden. Aber bei mir wird einfach ein normales Table View geladen, mein nib nimmt er nicht, obwohl ich es verbunden habe. Entschuldigung, dass ist meine erste Application, die ich allein erstelle. Kann mir vielleicht mal einer erklären wie genau sowas funktioniert, sprich was ich alles brauche?
    Lade doch mal ein Beispielprojekt hier hoch. Ohne Code wird das nix.
  • Wie man sieht wird beim Add-Button nur ein Normales aufgerufen und nicht mein Add-View. Für den Anfang wollte ich das wenn ich Add klicke, das AddView mit einer Zelle rein kommt. Und in diese kann ich dann etwas hineinschreiben und das wird zu meinen Table View zugefügt. Ich bekomm sowas einfaches schon nicht hin.
  • Bayer schrieb:

    Wie man sieht wird beim Add-Button nur ein Normales aufgerufen und nicht mein Add-View. Für den Anfang wollte ich das wenn ich Add klicke, das AddView mit einer Zelle rein kommt. Und in diese kann ich dann etwas hineinschreiben und das wird zu meinen Table View zugefügt. Ich bekomm sowas einfaches schon nicht hin.
    Um den AddController modal anzuzeigen, muss es ein UIViewController sein. Da die XIB AddView heißt, darf NibName nicht nil sein, sondern muss AddView sein:

    Quellcode

    1. AddController *second = [[AddController alloc] initWithNibName:@"AddView" bundle:nil];
  • Bayer schrieb:

    Ok danke es funktioniert. Nun ist ja mein UIViewController auch gleichzeitig der Controller für das Table View. Macht das was aus? Und im Add View nib ist ja oben einen Navigation Bar. Die wird aber nicht angezeigt im Simulator. Was muss ich da noch ändern?
    Nein, das macht nichts aus. Du musst natürlich noch dataSource und delegate im IB verknüpfen. Dann kannst du ganz normal die Table View Methoden und Delegates nutzen.
    Füge die Navigation Bar mal als Objekt dem View hinzu. Du hast ein "Simulated User Interface Element" ausgewählt, welches, wie der Name schon sagt, nur simuliert wird, damit man sehen kann, wie sich dies auf die App auswirkt.
  • Bayer schrieb:

    Noch mal zu der Navigation Bar. Wenn ich jetzt aus mit dem Interface Builder eine reinziehe, wird sie im Simulator angezeigt. Wenn ich aber Button auf ihr haben will, zeigt sie nichts an. So jetzt wie bekomme ich im Add View eine Navigation Bar mit der ich auch was machen kann?
    Wie fügst du den Button hinzu? Nimm eine Navigation Bar in Verbindung mit Bar Button Item(s).