最初,我有一个segue将普通的UITableview单元连接到ViewController,它起作用了。我以前的代码是之类的:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if segue.identifier == "SEGUE" {
let vc = segue.destinationViewController as! DetailsViewController
let cell = (sender as! UITableViewCell)
let title = cell.textLabel!.text
vc.titleData = title
}
}
现在我创建了一个自定义单元格,当我运行程序时,我的tableview正确填充了自定义单元格,只有这次segue不起作用。我回去调整了它,但我不知道怎么让它重新开始工作。 现在这是我的代码:
override func viewDidLoad() {
super.viewDidLoad()
//register custom cell
var nib = UINib(nibName: "tbvcell", bundle: nil)
self.tableView.registerNib(nib, forCellReuseIdentifier: "cell")
self.tableView.dataSource = self
getEarthquakeInfo { (info) in
self.tableView.reloadData()
dispatch_async(dispatch_get_main_queue()) {
self.tableView.reloadData()
}
}
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell: Thecell = self.tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as Thecell
cell.LocationLabel.text = info[indexPath.row].location
cell.scaleLabel.text = info[indexPath.row].scale
cell.TimeLabel.text = info[indexPath.row].time
return cell
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if (segue.identifier == "segue") {
let vc = segue.destinationViewController as DetailsViewController
if let indexPath = self.tableView.indexPathForSelectedRow(){
var cell: Thecell = self.tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as Theca
vc.titleData = info[indexPath.row].location
}
}
}
更新: 这真让我感到沮丧。我的prepareForSegue永远不会被调用,我甚至不知道为什么。我试过didSelectRowAtIndexPath并且它也没有工作。
Thecell.swift(我的自定义单元格文件)
import UIKit
import Foundation
class Thecell: UITableViewCell {
@IBOutlet weak var LocationLabel: UILabel!
@IBOutlet weak var scaleLabel: UILabel!
@IBOutlet weak var TimeLabel: UILabel!
}
如果那里有人可以指出我做错了什么,我会很感激。