2016-03-20 17 views
0

Ich versuche, meine erste iOS-App zu erstellen, die ich im App Store veröffentlichen möchte. Es handelt sich um eine Anwendung mit Tabs, die in jeden View Controller eingebettet ist. Hier ist der Code für einen meiner Tabbed View-Controller:Wie können Sie mit TableView-Elementen auf View-Controller in Swift 2 zugreifen?

import Foundation 
import UIKit 

class AU: UITableViewController { 

    var textArray = ["001", "002", "003", "004", "005", "006", "007", "008", "009", "010", "011", "012", "013", "014", "015", "016", "017", "018", "019", "020", "021", "022", "023", "024", "025", "026", "027", "028", "029", "030", "031", "032", "033", "034", "035", "036", "037", "038", "039", "040", "041", "042" ] 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("AUCell") as UITableViewCell! 

     cell.textLabel?.text = textArray[indexPath.row] 

     return cell 
    } 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return textArray.count 
    } 
} 

Also, im Grunde, wenn der Benutzer tippt auf eines der Elemente in der textArray, ich möchte auf einen anderen View-Controller wechseln. Ich bin derzeit das 2.

Antwort

2

jedes UIViewController in einem UITabBarController eingebettet in Swift Schreiben hat einen Verweis zurück auf die UITabBarController mit seiner tabBarController Eigenschaft. Um den ausgewählten View-Controller der Tab-Leiste zu ändern, stellen die Tab-Leiste des selectedViewController:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    if (indexPath.row == 0) { // check the row that was selected 
     self.tabBarController?.selectedIndex = 0 // select a new tab on the tab bar, changing the selected view controller 
    } 
} 
+0

Danke für die Antwort, aber ich bin mir nicht sicher, das ist genau das, was ich suche. Ich meinte, dass es an einen anderen View Controller senden würde, auf den sonst nicht zugegriffen werden kann. Ich wollte nicht zwischen Tab Bars wechseln. Außerdem ging ich voran und gab Ihrem Code einen Versuch, und nachdem ich versucht hatte, eine Storyboard-ID einzurichten, an die ich mich wenden konnte, wurde dieser Fehler angezeigt: Der Standard-View-Controller für UIMainStoryboardFile "Main" konnte nicht instanziiert werden Punkt ist nicht gesetzt? – 9fiftyfive

+0

Ah ich sehe, also möchten Sie einen View-Controller entweder aus einem Storyboard oder Xib und Preset instanziieren oder schieben Sie es. In diesem Fall würden Sie pushViewController oder presentViewController auf self mit der neuen VC aufrufen, die Sie anzeigen möchten. – JAL

0

Zunächst einmal ein paar Viewcontrollers in Ihrem Haupt-Storyboard erstellen und geben ihnen Storyboard ids

enter image description here

Liste der Namen erstellen:

let viewControllersNames = ["ViewController_1","ViewController_2","ViewController_3"] 

und in der Methode d:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    let vc = self.storyboard?.instantiateViewControllerWithIdentifier(self.viewControllersNames[indexPath.row]) 
    self.navigationController?.pushViewController(vc!, animated: true) 
} 

Viel Glück!

+0

Danke für die Bereitstellung des Codes! Ich habe es erfolgreich zu meiner App hinzugefügt, bin mir jedoch nicht sicher, wie ich auf einen bestimmten View Controller umleiten kann. Ich bin hier ein bisschen noob, wenn es um Code im Allgemeinen geht, und ich kann nur irgendwie ausmachen, was der Code bedeutet. Die App wird erfolgreich ausgeführt. Ich erhalte jedoch die Fehler, dass zwei meiner View-Controller (die beiden, die Sie erwähnten, keine Möglichkeit zum Zugriff haben). – 9fiftyfive

Verwandte Themen