我正在尝试将数据从“事件”表视图的选定单元格传递到“详细信息”视图控制器。我已经查看了类似于我的各种问题,但我似乎无法将其正确应用到我的代码中。我也使用标签,而不是字幕样式。还有一个需要传递的图像。
我的视图控制器如下所示:
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中的单元格时,它会将您带到详细信息视图,该视图显示与单元格(图像,名称,详细信息)相同的数据;可以在全长看到更长的描述。我在我的视图控制器中拉出了几个错误,这就是我所知道的全部内容。我的单元格格式化也有些混乱,但我会在此之后尝试解决这个问题,除非有快速解决方法。欢呼声。
答案 0 :(得分:0)
点击单元格时,看起来不会调用prepareForSegue函数。如果没有,您可以添加didSelectRow函数。试试这个:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.performSegueWithIdentifier("detailsSegue", sender: self)
}
然后当您选择单元格时,它将调用您的prepareForSegue函数。