ios - 单击 UICollectionViewCell 按钮时,Swift 3 将值传递给 Controller

标签 ios swift3 uinavigationcontroller uicollectionview

我是 iOS 开发的初学者,我使用 UICollectionView 实现了以下屏幕:

enter image description here

CollectionViewCell 文件代码为:

import UIKit

class EventCell: UICollectionViewCell{

var classEvent: Event?

@IBOutlet weak var eventTitle: UILabel!
@IBOutlet weak var eventTeams: UILabel!
@IBOutlet weak var eventTime: UILabel!
@IBOutlet weak var eventTeamOneImage: UIImageView!
@IBOutlet weak var eventTeamTwoImage: UIImageView!

@IBOutlet weak var leaderboardButton: UIButton!

var datasourceItem: Any?{
    didSet{
        guard let event = datasourceItem as? Event else { return }
        classEvent = event

        eventTitle.text = "Match \(event.matchNo) (\(event.matchStage))"
        eventTeams.text = "\(event.teamOne.nameAttr) vs \(event.teamTwo.nameAttr)"
        eventTime.text = "\(event.getEventLockTimeAsString())"
        eventTeamOneImage.loadImageUsingCache(withUrl: event.teamOne.flagPhoto)
        eventTeamTwoImage.loadImageUsingCache(withUrl: event.teamTwo.flagPhoto)
        leaderboardButton.addTarget(self, action: #selector(handleLeaderBoardClick), for: .touchUpInside)
    }
}

@IBAction func leagueButton(_ sender: Any) {
}

weak var delegate: HomeControllerDelegate?
func handleLeaderBoardClick() {
    if let matchId = classEvent?.id {
        print(matchId)
        delegate?.clickOnLeaderBoard(matchId: matchId)
    }
}   
 }

现在点击 Leaderboard 按钮(带 1、2、3 的图标)我想打开新的 LeaderBoard Controller 并传递 matchId,它是 classEvent.id

如何将值传递给新 Controller ?最好的方法是什么。

最佳答案

您可以通过 segue 传递匹配 ID:

在 LeaderBoard Controller 中设置一个属性:

var matchId:Int?

在 Controller 之间设置一个segue并添加一个标识符: 点击排行榜按钮:

self.performSegueWithIdentifier("yourSegueIdentifier", sender: self)

添加segue方法:

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

    if segue,identifier == "yourSegueIdentifier" {
        let destinationVC = segue.destinationViewController as LeaderbardController
        destinationVC.matchId = classEvent.id
        }
}
    }

关于ios - 单击 UICollectionViewCell 按钮时,Swift 3 将值传递给 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45803235/

相关文章:

iphone - 角色移动时 iOS FPS 低帧率,探查器显示 Physics.Simulate 占用 CPU 时间

ios - Appstore 中 iPhone 和 iPad 应用程序的 1 个链接

Swift 3 : press outside searchBar, 搜索被自动删除

ios - CALayer drawrect 抗锯齿功能不起作用

ios - 以编程方式向已以编程方式添加到表格单元格的标签添加约束

ios - 当数据来自网络时重用 UIViewController 的文件管理器

ios - 如何用swift制作单选按钮?

iphone - 使用 NSJSONSerialization 将 NSMutableDictionary 转换为 JSON 返回不同的结果

swift - 如何正确出列代码中的字幕 UITableViewCell?

ios - 嵌套回调强引用循环