我試圖做也許最簡單和更令人困惑的事情之一直到現在 我想開發自己的應用程序,爲了做到這一點,我需要能夠通過根據該行的用戶點擊的一些信息(這是斯威夫特lenguage)從TableView發送數據到DetailView 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!
@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()
}
的問題是:
如果用戶點擊法拉利458,該lblDetail在DetailViewController會顯示:法拉利458是一個超級汽車能夠達到325公里/小時......(無論我們想要什麼) 和imgDetail將能夠顯示汽車的圖像(無論我們想要的)
如果用戶點擊布加迪威龍現在磅lDetail告訴我們:Bugatti Veyron是一款完美超級運動機器。這是世界上最快的車之一....
imgDetail我們展示了這款車的形象
與所有汽車取決於我們點擊
哪一行,我知道同樣的事情的工作是圍繞prepareForSegue功能在第一視圖控制器,但我想了很多不同的方式,使其成爲可能和任何運行良好
我們如何做到這一點???
當我試圖傳遞一個字符串到另一個視圖控制器來存儲未來名稱時,我也面臨同樣的問題。我偶然發現了這篇清楚解釋它的文章。 http://www.codingexplorer.com/segue-swift-view-controllers/ – Mechanic 2015-05-04 20:14:48