swift 3从另一个视图控制器单击uitableviewcell后更改uitableviewcell?
问题描述:
我试图让我的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。我将如何做到这一点?
感谢您的帮助和时间提前
答
也许你应该尝试与协议。
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。
也许这是实现你想要的最好的方法。
您已添加的'didSelectRowAt indexPath'方法来自ViewController 2? –
@NiravD是的 – user3175707