UITable (Static Cells) in einen UIViewController integrieren

  • UITable (Static Cells) in einen UIViewController integrieren

    Wie kann UITableView mit Static Cells in einen UIViewController integrieren?

    Xcode gibt mir folgende Fehlermeldung aus:

    Static table views are only valid when embedded in UITableViewController instances


    Gibt es einen Workaround?
  • Da gibt es zwei Möglichkeiten:
    1. Du legst den Tableviewcontroller in einen Navigationcontroller. Der kann auch eine Toolbar verwalten und ist der sauberste Weg, wenn bei einem Viewcontrollerwechsel auch die Toolbaritems ausgetauscht werden sollen: developer.apple.com/library/io…ewController/toolbarItems
    2. Der Tableview muss nicht der Rootview in einem Tableview sein. Du kannst auch einen beliebigen View nehmen, der den Tableview als Subview hat. Die Property tableView sollte natürlich auf diesen Tableview zeigen.
    „Meine Komplikation hatte eine Komplikation.“
  • Vielen Dank für die schnelle Antwort.

    macmoonshine schrieb:

    Da gibt es zwei Möglichkeiten:
    1. Du legst den Tableviewcontroller in einen Navigationcontroller. Der kann auch eine Toolbar verwalten und ist der sauberste Weg, wenn bei einem Viewcontrollerwechsel auch die Toolbaritems ausgetauscht werden sollen: developer.apple.com/library/io…ewController/toolbarItems
    2. Der Tableview muss nicht der Rootview in einem Tableview sein. Du kannst auch einen beliebigen View nehmen, der den Tableview als Subview hat. Die Property tableView sollte natürlich auf diesen Tableview zeigen.
    1. Kann ich denn mehr als einen ToolBarButton in der Toolbar des Navigationcontrollers hinzufügen? Im Storyboard habe ich es nicht hinbekommen.
    2. Auch bei einer TableView mit Stativ Cells? Ich habe es im Storyboard zumindest nichthinbekommen, die TableView in eine andere View zu verschieben?
  • Chipie schrieb:

    1. Kann ich denn mehr als einen ToolBarButton in der Toolbar des Navigationcontrollers hinzufügen? Im Storyboard habe ich es nicht hinbekommen.

    Du musst die Property manuell setzen. Am einfachsten legst Du eine Toolbar in der Scene des Viewcontrollers an, die Du über ein Outlet mit dem Viewcontroller verbindest. In der Methode viewDidLoad weist Du der Property toolbarItem die Elemente dieser Toolbar zu.

    Quellcode

    1. - (void)viewDidLoad {
    2. [super viewDidLoad];
    3. self.toolbarItems = self.toolbar.items;
    4. }
    „Meine Komplikation hatte eine Komplikation.“
  • macmoonshine schrieb:

    Chipie schrieb:

    1. Kann ich denn mehr als einen ToolBarButton in der Toolbar des Navigationcontrollers hinzufügen? Im Storyboard habe ich es nicht hinbekommen.

    Du musst die Property manuell setzen. Am einfachsten legst Du eine Toolbar in der Scene des Viewcontrollers an, die Du über ein Outlet mit dem Viewcontroller verbindest. In der Methode viewDidLoad weist Du der Property toolbarItem die Elemente dieser Toolbar zu.

    Quellcode

    1. - (void)viewDidLoad {
    2. [super viewDidLoad];
    3. self.toolbarItems = self.toolbar.items;
    4. }
    Habe ich das richtig verstanden? Ich embede den TableViewController in einen NavigationController, füge in der TableView eine Toolbar mit den gewünschten Buttons ein und setze die die toolbarItems wiefolgt:


    Quellcode

    1. - (void)viewDidLoad {
    2. [super viewDidLoad];
    3. self.toolbarItems = self.toolbar.items;
    4. }


    Die Navigationtoolbar zeigt mir die Buttons aus meiner eigenen Toolbar nicht an.

    Zu Deinem 2. Vorschlag: Ich schaffe es nicht die TableView im Storyboard in eine andere Rootview zu verschieben. Muss in einem TableView Controller die TableView nicht immer gleich die Root View sein?
  • Chipie schrieb:

    Ich möchte nur eine Toolbar haben, die oben angezeigt werden soll.

    Immer diese Extrawünsche. ;)

    Der Interface Builder erlaubt in Storyboards nicht, dass Du einen UIView auf einen Tableviewcontroller ziehst. Stattdessen ziehst Du den View auf die oberste Ebene der Szene und legst den Tableview da rein. Dann ziehst Du eine Verbindung vom Viewoutlet des Controllers zu diesem View. In Deiner Unterklasse von UITableViewController deklarierst Du

    Quellcode

    1. @property (retain, nonatomic) IBOutlet UITableView *tableView;
    , die Du mit

    Quellcode

    1. @dynamic tableView;
    implementierst. Dann kannst Du eine Verbindung vom Tableviewcontroller zum Tableview ziehen.

    Deinen View kannst Du dann so gestalten, wie Du es magst.
    „Meine Komplikation hatte eine Komplikation.“
  • macmoonshine schrieb:

    Chipie schrieb:

    Ich möchte nur eine Toolbar haben, die oben angezeigt werden soll.

    Immer diese Extrawünsche. ;)

    Der Interface Builder erlaubt in Storyboards nicht, dass Du einen UIView auf einen Tableviewcontroller ziehst. Stattdessen ziehst Du den View auf die oberste Ebene der Szene und legst den Tableview da rein. Dann ziehst Du eine Verbindung vom Viewoutlet des Controllers zu diesem View. In Deiner Unterklasse von UITableViewController deklarierst Du

    Quellcode

    1. @property (retain, nonatomic) IBOutlet UITableView *tableView;
    , die Du mit

    Quellcode

    1. @dynamic tableView;
    implementierst. Dann kannst Du eine Verbindung vom Tableviewcontroller zum Tableview ziehen.

    Deinen View kannst Du dann so gestalten, wie Du es magst.

    macmoonshine schrieb:

    Chipie schrieb:

    Ich möchte nur eine Toolbar haben, die oben angezeigt werden soll.

    Immer diese Extrawünsche. ;)

    Der Interface Builder erlaubt in Storyboards nicht, dass Du einen UIView auf einen Tableviewcontroller ziehst. Stattdessen ziehst Du den View auf die oberste Ebene der Szene und legst den Tableview da rein. Dann ziehst Du eine Verbindung vom Viewoutlet des Controllers zu diesem View. In Deiner Unterklasse von UITableViewController deklarierst Du

    Quellcode

    1. @property (retain, nonatomic) IBOutlet UITableView *tableView;
    , die Du mit

    Quellcode

    1. @dynamic tableView;
    implementierst. Dann kannst Du eine Verbindung vom Tableviewcontroller zum Tableview ziehen.

    Deinen View kannst Du dann so gestalten, wie Du es magst.
    Habe Deine Antwort jetzt erst Gehegen. Werde ich ausprobieren. Vielen Dank schonmal
  • macmoonshine schrieb:

    Chipie schrieb:

    Ich möchte nur eine Toolbar haben, die oben angezeigt werden soll.

    Immer diese Extrawünsche. ;)

    Der Interface Builder erlaubt in Storyboards nicht, dass Du einen UIView auf einen Tableviewcontroller ziehst. Stattdessen ziehst Du den View auf die oberste Ebene der Szene und legst den Tableview da rein. Dann ziehst Du eine Verbindung vom Viewoutlet des Controllers zu diesem View. In Deiner Unterklasse von UITableViewController deklarierst Du

    Quellcode

    1. @property (retain, nonatomic) IBOutlet UITableView *tableView;
    , die Du mit

    Quellcode

    1. @dynamic tableView;
    implementierst. Dann kannst Du eine Verbindung vom Tableviewcontroller zum Tableview ziehen.

    Deinen View kannst Du dann so gestalten, wie Du es magst.
    Ich bekomme da immer noch die Fehlermeldung:


    Quellcode

    1. error: Illegal Configuration: Static table views are only valid when embedded in UITableViewController instances



    Habe ich was falsch gemacht?
  • Das scheint nicht zu funktionieren. Entweder verwendest Du doch einen Navigationcontroller und bastelst Dir die Navigationbar mit Customviews so um, wie Du es brauchst oder Du verwendest keinen Tableviewcontroller. Nach dem Screenshot frage ich mich, ob der für Dein Problem wirklich die geeignetste Lösung ist.
    „Meine Komplikation hatte eine Komplikation.“