从另一个视图控制器单击 uitableviewcell 后,swift 3 更改 uitableviewcell?
Posted
技术标签:
【中文标题】从另一个视图控制器单击 uitableviewcell 后,swift 3 更改 uitableviewcell?【英文标题】:swift 3 change uitableviewcell after click uitableviewcell from another view controller? 【发布时间】:2016-11-16 05:11:41 【问题描述】:当用户单击 viewcontroller 2 中的 tableview 单元格中的单元格时,我正在尝试更改 viewcontroller 1 中的 tableview 单元格。我知道我必须使用该功能
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 与 timeTableView 和 timeTableViewCell。我将如何做到这一点?
提前感谢您的帮助和时间
【问题讨论】:
你添加的didSelectRowAt indexPath
方法来自ViewController 2?
@NiravD 是的
【参考方案1】:
也许您应该尝试使用协议。
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
要确保 delegate 不会是 nil:
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
let vc2 = segue.destination as! ViewController2
vc2.delegate = self
或任何你选择 ViewController2 的地方。
也许这是实现您想要的最佳方式。
【讨论】:
以上是关于从另一个视图控制器单击 uitableviewcell 后,swift 3 更改 uitableviewcell?的主要内容,如果未能解决你的问题,请参考以下文章