2016-11-16 9 views
0

私は機能swift 3 uitableviewcellをクリックした後、別のビューコントローラからuitableviewcellをクリックしますか?

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

と仕事をしなければならないことを知っているときのViewController 2からテーブルビューセルからセルにユーザーがクリック私はしかし、私はないですがViewController 1変化から、私のテーブルビューのセルを作るしようとしていますどのように私が欲しかったことを達成するだろうか。

は、ここに私のコードです:

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

    var valueToPass = currentCell.textLabel?.text 

} 

は、私は別の「ビューコントローラで私の細胞内にvalueToPass変数を取得したいです。これは、timeTableViewとtimeTableViewCellを持つtimeViewControllerと呼ばれています。私はこれをどのようにして行いますか?

ご協力いただきありがとうございます。

+0

あなたが追加した 'didSelectRowAt indexPath'メソッドは、ViewController 2からのものですか? –

+0

@NiravDはい – user3175707

答えて

0

おそらく、プロトコルを試してみてください。

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) 
    } 
} 

次にViewController1に実装:

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 
    } 
} 

をデリゲートがnilではありません確かに:

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

またはどこでもViewController2にセグエ。

おそらく、これはあなたが望むものを達成するための最良の方法です。

関連する問題