将数据从TableViewCell标签传递到ViewController的问题

时间:2016-04-12 20:25:16

标签: ios swift uitableview

我正在尝试将数据从“事件”表视图的选定单元格传递到“详细信息”视图控制器。我已经查看了类似于我的各种问题,但我似乎无法将其正确应用到我的代码中。我也使用标签,而不是字幕样式。还有一个需要传递的图像。

我的视图控制器如下所示:

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    var names = ["Brown Diner", "Kirkland", "Choco", "Lil Wayne", "Annie", "Social"]
    var details = ["Free drink with meal after 12 AM", "LADIES drink free", "10% off all ice cream!", "concert", "a Theater Production", "Bring your Squad to the Social"]
    var images = [UIImage(named: "brown"), UIImage(named: "kirk"), UIImage(named: "choco"), UIImage(named: "lilwayne"), UIImage(named: "default"), UIImage(named: "default")]

    override func viewDidLoad() {
    super.viewDidLoad()
    }


    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = self.tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! CustomCell
        cell.name.text = names[indexPath.row]
        cell.detail.text = details[indexPath.row]
        cell.photo.image = images[indexPath.row]
        return cell
    }

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

        if segue.identifier == "detailsSegue" {
            guard let eventVC = segue.destinationViewController as? DetailsViewController,
                let eventIndex = tableView.indexPathForSelectedRow?.row else {
                    return
            }
            eventVC.eventName = names[eventIndex]
            eventVC.eventDetail = details[eventIndex]
            eventVC.eventPhoto = images[eventIndex]
        }
    } 
}

我的customCell.swift文件:

import UIKit

class CustomCell: UITableViewCell {

    @IBOutlet var photo: UIImageView!
    @IBOutlet var name: UILabel!
    @IBOutlet var detail: UILabel!

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}

我的detailsViewController

import Foundation
import UIKit

class DetailsViewController : UIViewController {

    @IBOutlet var detailsLabel: UILabel!
    @IBOutlet var detailsImage: UIImageView!
    @IBOutlet var detailsDesc: UILabel!

    override func viewDidLoad() {

    }
}

我对Swift很新,事实证明这对我来说非常具有挑战性。我真的不是一个程序员,但是一个项目要求我完成一些应用程序的编码,我是UI / UIX的设计者。感谢您的帮助!

EDIT :: 项目:https://github.com/vpags1/events.git

当用户点击TableView中的单元格时,它会将您带到详细信息视图,该视图显示与单元格(图像,名称,详细信息)相同的数据;可以在全长看到更长的描述。我在我的视图控制器中拉出了几个错误,这就是我所知道的全部内容。我的单元格格式化也有些混乱,但我会在此之后尝试解决这个问题,除非有快速解决方法。欢呼声。

1 个答案:

答案 0 :(得分:0)

点击单元格时,看起来不会调用prepareForSegue函数。如果没有,您可以添加didSelectRow函数。试试这个:

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

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

    }

然后当您选择单元格时,它将调用您的prepareForSegue函数。