2016-11-16 5 views
0

Ich versuche, meine Tableview Zelle von Viewcontroller 1 ändern, wenn der Benutzer Klick auf eine Zelle, die von Tableview Zelle von Viewcontroller 2. Ich weiß, dass ich arbeiten muss mit der Funktionswift 3 Änderung uitableviewcell nach Klick auf uitableviewcell von einem anderen View-Controller?

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 

jedoch zu machen, ich bin nicht sicher, wie ich erreichen würde, was ich wollte.

Hier ist mein Code:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    let indexPath = changeHotelTableView.indexPathForSelectedRow; 
    let currentCell = changeHotelTableView.cellForRow(at: indexPath!) as! ChangeHotelTableViewCell 

    var valueToPass = currentCell.textLabel?.text 

} 

ich die valueToPass Variable in meine Zelle in einem anderen‘View-Controller erhalten möchten; sagen wir das heißt timeViewController mit timeTableView und eine timeTableViewCell. Wie werde ich das tun?

Vielen Dank für Ihre Hilfe und Zeit im Voraus

+0

Die Methode 'didSelectRowAt indexPath', die Sie hinzugefügt haben, stammt von ViewController 2? –

+0

@NiravD ja ist es – user3175707

Antwort

0

Vielleicht sollten Sie mit Protokoll versuchen.

ViewController2:

protocol UserPressTheCell: NSObjectProtocol 
{ 
    func didUserPressTheCellWith(indexPath: IndexPath, text: String) 
} 

class ViewController2: UIViewController 
{ 
    //declare delegate 
    weak var delegate: UserPressTheCell? 
    .... 
    func tableview(_ tableview: UITableView, didSelectRowAt indexPath: IndexPath) 
    { 
     let indexPath = changeHotelTableView.indexPathForSelectedRow; 
     let currentCell = changeHotelTableView.cellForRow(at: indexPath!) as! ChangeHotelTableViewCell 

     self.delegate?.didUserPressTheCellWith(indexPath: indexPath, text: currentCell.textLabel?.text) 
    } 
} 

Dann in ViewController1 implementieren:

class ViewController1: UIViewController, UserPressTheCell 
{ 
    @IBOutlet weak var tableview: UITableView! 
    ... 
    //MARK: UserPressTheCell 
    func didUserPressTheCellWith(indexPath: IndexPath, text: String) 
    { 
     let cell = self.tableView.cellForRow(at: indexPath!) as! "Your VC1's cell" 
     cell.textLabel?.text = text 
    } 
} 

sicher delegieren Um nicht gleich Null sein:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
{ 
    let vc2 = segue.destination as! ViewController2 
    vc2.delegate = self 
} 

oder wo auch immer Sie segue zu ViewController2.

Vielleicht ist dies der beste Weg, um das zu erreichen, was Sie wollten.

Verwandte Themen