直到现在我想开发自己的App之前,我都试图为我做一件最简单,更令人困惑的事情,为了做到这一点,我需要能够根据行用户点击的方式传递一些信息(这是Swift语言)
我们有一个RootViewController(表视图)和DetailViewController(带有1个标签和1个图像) 在此处输入图片说明
(我们的观点)
这是代码:
@IBOutlet weak var tableView: UITableView!
var vehicleData : [String] = ["Ferrari 458" , "Lamborghini Murcielago" , "Bugatti Veyron", "Mercedes Benz Biome"]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var nib = UINib(nibName: "TableViewCell", bundle: nil)
tableView.registerNib(nib, forCellReuseIdentifier: "cell")
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return vehicleData.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell:TableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as TableViewCell
cell.lblCarName.text = vehicleData[indexPath.row]
cell.imgCar.image = UIImage(named: vehicleData[indexPath.row])
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
performSegueWithIdentifier("DetailView", sender: self)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if(segue.identifier == "DetailView") {
var vc = segue.destinationViewController as DetailViewController
}
}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 100
}
自定义TableViewCell类(具有带有单元格的xib文件)
class TableViewCell: UITableViewCell {
@IBOutlet weak var lblCarName: UILabel!
问题是:
如果用户单击Ferrari 458,则DetailViewController中的lblDetail将显示:Ferrari 458是一辆超级跑车,能够达到325 km / h……(无论我们想要什么),imgDetail可以显示图像(无论如何)我们想要的)
如果用户单击布加迪威龙,则lblDetail向我们显示:布加迪威龙是一款完美的超级运动机。它是世界上最快的汽车之一。
imgDetail向我们展示这辆车的图像
所有汽车都一样,这取决于我们点击了哪一行
我知道工作是围绕第一个View Controller中的prepareForSegue函数进行的,但是我正在尝试许多不同的方法来使其成为可能,并且一切正常
我们如何做到这一点???
慕的地8271018
莫回无