2016-11-16 42 views
0

我試圖讓我的tableview細胞從視圖 - 控制1個時,改變從tableview中小區的小區用戶點擊從視圖 - 控制2.我知道我有swift 3從另一個視圖控制器單擊uitableviewcell後更改uitableviewcell?

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

然而,隨着功能的工作,我不肯定我會如何完成我想要的。

這裏是我的代碼:

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可變進我的細胞;比如說這叫timeViewController with timeTableView和timeTableViewCell。我將如何做到這一點?

感謝您的幫助和時間提前

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

可以肯定的代表將不會是零:

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

或任何你原因請看ViewController2。

也許這是實現你想要的最好的方法。

相關問題