gpt4 book ai didi

ios - 如何从collectionview中被点击的单元格中获取信息

转载 作者:行者123 更新时间:2023-11-29 01:14:49 24 4
gpt4 key购买 nike

你好,我在我的 Controller 中实现了一个 UICollectionView。我在每个单元格上显示了很多信息。当用户单击特定单元格时,我想将单元格中的所有信息传递给另一个 Controller 。

因为我在单元格中显示来自数据库的所有数据,并且单元格是动态生成的,所以我认为一种方法可能是将记录 ID 从一个单元格传递到此函数didSelectItemAtIndexPath,然后在我再次从数据库中查询第二个 Controller 。但我认为这不是个好主意。而且我不知道如何在此函数 didSelectItemAtIndexPath 中传递 ID 或任何信息。

所以简而言之,我想在另一个 Controller 中显示所有信息,该 Controller 正在显示在被单击的单元格中

这是我的代码

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath
indexPath: NSIndexPath) -> UICollectionViewCell {

let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell",
forIndexPath: indexPath) as! CardsCollectionCell
cell.usernameLabel.text = (((dict["\(indexPath.item)"] as?NSDictionary)!["Trip"] as?NSDictionary)!["userName"] as?NSString)! as String
cell.feeLabel.text = (((dict["\(indexPath.item)"] as?NSDictionary)!["Trip"] as?NSDictionary)!["fee"] as?NSString)! as String

return cell
}

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {

}

最佳答案

所以让我们分部分来解释,didSelectItemAtIndexPath 委托(delegate)方法用于知道 UICollectionViewController 中的 UICollectionViewCell 被点击了,你可以使用方法 cellForItemAtIndexPath(它与 collectionView(collectionView: UICollectionView, cellForItemAtIndexPath 不同)非常容易地获取 UICollectionViewCell,如下代码所示:

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
let cell = self.collectionView?.cellForItemAtIndexPath(indexPath) as! CardsCollectionCell
// access to any property inside the cell you have.
// cell.usernameLabel.text
}

关于简而言之,我想在另一个 Controller 中显示所有信息,这些信息显示在被单击的单元格中

您可以使用 didSelectItemAtIndexPath 方法毫无问题地使用方法 performSegueWithIdentifier 启动手动 segue 到另一个 UIViewController 并且只是在 prepareForSegue 传递任何你需要传递给另一个 UIViewController 的数据。见以下代码:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
// the identifier of the segue is the same you set in the Attributes Inspector
self.performSegueWithIdentifier("segueName", sender: self)
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

if(segue.identifier == "segueName") {
// this is the way of get the indexPath for the selected cell
let indexPath = self.collectionView.indexPathForSelectedRow()
let row = indexPath.row

// get a reference to the next UIViewController
let nextVC = segue.destinationViewController as! NameOfYourViewController
}
}

希望对你有帮助

关于ios - 如何从collectionview中被点击的单元格中获取信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35325686/

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