gpt4 book ai didi

swift - 如何快速将 didSelectRowAtIndexPath 发送回 View Controller

转载 作者:可可西里 更新时间:2023-11-01 01:06:41 25 4
gpt4 key购买 nike

我在 swift 中有 1 个 viewController 和 1 个 tableViewController。我可以从 viewController 发送一个 NSMutableArray 来使用 segue 填充 tableViewController。我不知道如何将选定的行发送回 View Controller 。到目前为止的代码:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
println("You selected cell #\(indexPath.row)!")

// Missing code for sending back the selected row

self.dismissViewControllerAnimated(true, completion: nil)
}

有什么想法吗?

最佳答案

您可以使用委托(delegate)模式。创建协议(protocol):

protocol MyDataDelegate {
didSelectRow(row: NSIndexPath, data: MyData)
}

在表格 Controller 中,添加一个属性:

var myDataDelegate: MyDataDelegate?

并在 didSelectRowAtIndexPath 中调用委托(delegate)方法:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
println("You selected cell #\(indexPath.row)!")

let data = getDataForRow(indexPath) // <== You need to implement it
self.myDataDelegate?.didSelectRow(indexPath, data: data)

self.dismissViewControllerAnimated(true, completion: nil)
}

接下来,在您的主视图 Controller 中:

  • 实现MyDataDelegate协议(protocol)
  • 实现 MyDataDelegate.didSelectRow 方法
  • 在呈现表 Controller 之前(或者在创建它之后,如果您手动执行),将表 Controller 的 myDataDelegate 属性设置为 self

这样,当在您的表 Controller 中选择一行时,didSelectRow 方法将在您的主视图 Controller 上调用,因此您可以对索引路径和/或数据执行任何需要的操作.

当然可以随意更改 didSelectRow 签名(使用索引路径或行索引,有或没有数据等)

关于swift - 如何快速将 didSelectRowAtIndexPath 发送回 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26261580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com