UITableView Problem

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • UITableView Problem

    Hi Leute,

    ich finde leider nichts passendes dazu, wie man wenn man einen UITableView erstellt hat diesen dann so programmiert, dass der User bei einer Action auf einen neuen View Controller kommt. Hierbei ist mir auch sehr wichtig, dass es immer andere UIViewController sind. Kleines Beispiel: Man tippt auf den ersten Cell in einem TableView und kommt dann z.B auf ein Profil oder man tippt den 5 und kommt dann zu einer Landkarte. Wie programmiere ich dies in Swift, bzw. wie finde ich Informationen dazu?

    Vielen Dank für eure Unterstützung!


    Grüße
    Jan
  • Ohne nun direkt auf Swift eingehen zu können: Es gibt natürlich viele Wege. Einer wäre, in der UITableView-Delegate-Methode tableView:didSelectRowAtIndexPath: den IndexPath abzufragen und abhängig von diesem den passenden UIViewController zu instanzieren und auf den NavigationController zu pushen.

    Kurzes Code-Snippet in Objective-C:

    Quellcode

    1. if ([indexPath isEqual:[NSIndexPath indexPathForRow:1 inSection:3]])
    2. {
    3. // Navigate to the sub-table managing class rooms
    4. SRRoomListViewController *roomListViewController = [[SRRoomListViewController alloc] initWithStyle:UITableViewStylePlain];
    5. roomListViewController.timeTable = self.timeTable;
    6. self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"strBackButtonTitle", @"Title of back button")
    7. style:UIBarButtonItemStylePlain target:nil action:nil];
    8. [self.navigationController pushViewController:roomListViewController animated:YES];
    9. }
    Das ganze sieht natürlich etwas anders aus, wenn Du den ViewController z. B. aus einem Storyboard instanzierst, oder mit statischen Zellen arbeitest, oder ... oder ... oder. Der Phantasie sind keine Grenzen gesetzt. Ich persönlich erstelle Details meine UIs gerne möglichst weit im Code.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Also ich gehe jetzt mal davon aus das du eine feste Anzahl von Zellen in deiner TableView hast, sagen wir fünf. Du könntest bspw. fünf Sections erstellen. Jede Section beinhaltet eine Zelle (kannst du aber festlegen wie du möchtest).

    Dann kannst du über indexPath.section zum einen festlegen wie die einzelnen Zellen aussehen sollen und in der Funktion didSelectRowAt festlegen welcher ViewController aufgerufen werden soll.

    Hab mal auf die schnelle ein kleines Beispiel zusammen geschustert. Sollte eigentlich funktionieren. Aber wie meine Vorredner schon gesagt haben, es führen viele Wege nach Rom.

    Quellcode

    1. override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    2. if section == 0 {
    3. return 1 // kannst du anpassen wie du es brauchst
    4. } else {
    5. return 1
    6. }
    7. }


    Quellcode

    1. override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    2. if indexPath.section == 0 {
    3. // dein Code, hier legst du fest was in der Zelle zu sehen sein soll
    4. } else if indexPath.section == 1 {
    5. // dein Code
    6. } else {
    7. // dein Code
    8. }
    9. }

    Quellcode

    1. func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    2. if section.indexPath = 0 {
    3. if let destinationViewController = storyboard?.instantiateViewController(withIdentifier: "deinController") {
    4. // Present Second View
    5. present(destinationViewController, animated: true, completion: nil)
    6. }
    7. }
    8. }