gpt4 book ai didi

ios - 我在表格中按下的单元格发送之前按下的单元格的标签

转载 作者:行者123 更新时间:2023-11-28 08:19:45 26 4
gpt4 key购买 nike

我是 Swift 的新手,我遇到了这个有趣的问题。

当我转至打印它的另一个 View Controller 时,我试图发送表格单元格的标签。问题是它正在打印在这次按下之前按下的单元格的标签。

这是传递标签的主视图 Controller 中的代码:

// When a user taps on a cell on the tableView, it asks for a tag name for that image.
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

print("Cell \(indexPath) selected")

// Get cell image.
let indexPath = tableView.indexPathForSelectedRow
let currentCell = tableView.cellForRow(at: indexPath!) as! ImageFeedItemTableViewCell
imagePass = currentCell.itemImageView
labelPass = currentCell.itemTitle

}


override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

// Send image to GreetingViewController.
if segue.identifier == "GoToGreeting" {
var greetingvc = segue.destination as! GreetingViewController
greetingvc.passedImage = imagePass
greetingvc.passedLabel = labelPass

}
}

下面是接收传递标签的 View Controller 中的相关代码:

var passedImage: UIImageView? = nil
var passedLabel: UILabel? = nil


override func viewDidLoad() {
super.viewDidLoad()

// Do any additional setup after loading the view.

print(passedLabel?.text)

}

如有任何帮助,我们将不胜感激。

最佳答案

我相信 prepare(for:sender:)tableView(_:didSelectRowAt:) 之前被调用,当你在 Storyboard中连接那个 segue 时。

你所能做的只是使用prepare(for:sender:)方法的sender参数在正确的时间获取你需要的信息。当一个单元格触发一个 segue 时,就像你的情况一样,那么该单元格将是传递给 prepare 方法的 sender 。所以,你可以这样做:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Send image to GreetingViewController.
if let cell = sender as? ImageFeedItemTableViewCell, segue.identifier == "GoToGreeting" {
var greetingvc = segue.destination as! GreetingViewController
greetingvc.passedImage = cell.itemImageView
greetingvc.passedLabel = cell.itemTitle
}
}

关于ios - 我在表格中按下的单元格发送之前按下的单元格的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41645722/

26 4 0