gpt4 book ai didi

swift - 将 customCell 标签文本发送到目标 View

转载 作者:行者123 更新时间:2023-11-28 15:55:13 26 4
gpt4 key购买 nike

我被困在这个问题上了。我正在从 Firebase 下载一个 json 文件并成功显示在 TableView 中。该 TableView 有一个带有两个标签的自定义单元格。我已经设置了从自定义单元格到 Detail ViewController 的 segue 链接。这工作正常,但现在我想获取单元格标签的文本内容并发送到目标 ViewController。

我过去在执行此操作时没有遇到任何问题,但在自定义单元格中通过 label.text 实现此操作时遇到了问题。

我正在使用 label 标签(label1 和 label2,尽管有时我可能会将其更改为标签名称)。

问题是,如何从所选行的两个标签中获取文本内容并将它们传递给 DetailViewController?到目前为止,我所有的尝试都失败了。有什么我应该做的:

  valueToPass = currentCell?.textLabel?.text 

代码如下:

  struct postStruct {
let property : String!
let propType : String!
}

class TableViewController: UITableViewController {

var posts = [postStruct]()

override func viewDidLoad() {
super.viewDidLoad()

self.tableView.delegate = self
self.tableView.dataSource = self

let databaseRef = FIRDatabase.database().reference()

databaseRef.child("users").queryOrderedByKey().observe(.childAdded, with: {
snapshot in

let snapshotValue = snapshot.value as? NSDictionary
let property = snapshotValue!["property"] as? String

let propType = snapshotValue!["type"] as? String

self.posts.insert(postStruct(property: property, propType: propType), at: 0)
self.tableView.reloadData()
})
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return posts.count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCell(withIdentifier: "Cell")

let label1 = cell?.viewWithTag(1) as! UILabel
label1.text = posts[indexPath.row].property

let label2 = cell?.viewWithTag(2) as! UILabel
label2.text = posts[indexPath.row].propType
// print(posts)
// cell.setcell(valueToPass.label1)
return cell!
}

override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}

var valueToPass:String!

func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {

// Get Cell Label
let indexPath = tableView.indexPathForSelectedRow;
let currentCell = tableView.cellForRow(at: indexPath!) as UITableViewCell!;

valueToPass = currentCell?.textLabel?.text
performSegue(withIdentifier: "detailSegue", sender: self)
}

欢迎提供任何帮助,尤其是代码示例。非常感谢期待

最佳答案

为您的 tableCell 创建一个自定义类,并在 StoryBoard 中附加 socket 。

cellForRowAt 中的单元格创建变为

let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") As! MyCustomCell
cell.label1.text = posts[indexPath.row].property
cell.label2.text = posts[indexPath.row].propType

然后 didSelectRowAtIndexPath 变成

let indexPath = tableView.indexPathForSelectedRow
let currentCell = tableView.cellForRow(at: indexPath!) as! MyCustomCell

self.valueToPass = currentCell.label1?.text
performSegue(withIdentifier: "detailSegue", sender: self)

如果要为 segue 做准备,你需要做的最后一件事

override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
if segue.identifier == "detailSegue" // you may have more than one segue, so you should check
{
let destinationController : DestinationViewControllerClass = segue.destination as! DestinationViewControllerClass
destinationController.valueToPass = self.valueToPass
}
}

关于swift - 将 customCell 标签文本发送到目标 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41871434/

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