Я пытаюсь сделать, возможно, одну из самых простых и запутанных вещей для меня до сих пор, я хочу разработать собственное приложение, и для этого мне нужно иметь возможность передавать некоторую информацию в зависимости от того, какой пользователь щелчка строки (это Swift lenguage)
У нас есть 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!
@IBOutlet weak var imgCar: UIImageView!
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
}
class DetailViewController: UIViewController {
@IBOutlet weak var lblDetail: UILabel!
@IBOutlet weak var imgDetail: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
}
Вопрос в том:
если пользователь нажмет Ferrari 458, lblDetail в DetailViewController покажет: Ferrari 458 - суперканал, способный достигать 325 км/ч...... (что бы мы ни захотели), и imgDetail сможет показать изображение (что угодно мы хотим) автомобиля
Если пользователь нажимает Bugatti Veyron, теперь lblDetail покажет нам: Bugatti Veyron - идеальная и супер спортивная машина. Это один из самых быстрых автомобилей в мире....
imgDetail показать нам изображение этой машины
То же самое со всеми автомобилями, в зависимости от того, какую строку мы нажали
Я знаю, что работа вокруг prepareForSegue func в первом View Controller, но я пытался много разных способов сделать это возможным, и все работает нормально
Как мы можем это сделать???