gpt4 book ai didi

swift - 从 tableView 更改 DetailVC 中的标签

转载 作者:可可西里 更新时间:2023-11-01 02:25:18 26 4
gpt4 key购买 nike

我正在尝试根据我们单击的行更改 DetailViewController 中的标签:

That is how my test App looks

例如,如果我们点击法拉利我想显示:

“Wow , it's a beautiful red Ferrari of the year… blablabla..”

但是如果你点击另一个:

“I’m the label of the…. car”

基本上,每辆车一个描述。

如何更改标签?

我的代码:

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

@IBOutlet weak var tableView: UITableView!

var valueToPass : String!

//crear un color
let medOrange: UIColor = UIColor(red: 0.973, green: 0.388, blue: 0.173, alpha: 1)

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")

//Propiedades de la tableView
self.tableView.backgroundColor = medOrange
self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None

}

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])

cell.backgroundColor = medOrange

return cell

}

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

println("Has seleccionado la celda #\(indexPath.row)!")

//Obtener la label de la celda
let indexPath = tableView.indexPathForSelectedRow()

let currentCell = tableView.cellForRowAtIndexPath(indexPath!) as UITableViewCell!

valueToPass = currentCell.textLabel?.text

performSegueWithIdentifier("DetailView", sender: self)

}

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

if(segue.identifier == "DetailView") {

var vc = segue.destinationViewController as DetailViewController

vc.passedValue = valueToPass

}
}


func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 100
}

import UIKit

class DetailViewController: UIViewController {

var passedValue : String!

@IBOutlet weak var lblDetail: UILabel!

@IBOutlet weak var imgDetail: UIImageView!

override func viewDidLoad() {
super.viewDidLoad()

}

最佳答案

据我所知,您做得很好,您的代码中唯一缺少的部分是将 passedValue 设置为 DetailViewController 中的标签,因此只需在 viewDidLoad 方法中添加以下内容

override func viewDidLoad() {
super.viewDidLoad()

lblDetail.text = passedValue

}

编辑:

要将描述传递给 DetaliViewContorller,您必须首先以某种方式存储它,最好的方法是声明一个包含名称和描述的结构

struct Vehicle {

var vehicleName : String
var vehicleDescription : String
}

那么你的 vehicleData 数组应该包含 Vehicle 类型的对象

var vehicleData : [Vehice] = [Vehicle(vehicleName : "Ferrari 458",vehicleDescription : "Ferrari desc" ), //Add all vehicles like this...]

最后 passedValue 必须这样初始化

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

valueToPass = vehicleData[indexPath.row].vehicleDescription

performSegueWithIdentifier("DetailView", sender: self)

}

关于swift - 从 tableView 更改 DetailVC 中的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28582400/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com