我有一个想要完全适应我想要的应用程序
我一直在关注Seemu Apps的Youtube教程,但是我需要添加一个可选的ViewController来完成它
该应用程序有2个显示车辆的tableViews,如果我们单击第一个tableView的一行,则第二个tableView将向我们显示选定车辆的列表。
这是到目前为止我们所拥有的:(图像链接,因为我在stackOverFlow上没有十分的声誉)
http://subefotos.com/ver/?65ba467040cb9280e8ec49644fd156afo.jpg
一切运行良好,但我希望能够在第二个TableViewControlle(或App中的modelViewController)中单击哪个车辆,以在可选的detailViewController(带有每辆车的详细说明的标签以及此车的更大图像)中显示信息。正是我在tableViews之间的教程中遵循的方式
我知道我们需要通过prepareForSegue方法传递数据,我已经理解了本教程中的步骤,但是当我们有2个tableviewControllers时
例如:如果我们要显示一个最后的viewController,其中包含Ferrari 458的信息以及此车的精美图片
我们到底需要做什么才能显示每辆车的信息?
PD:我是编程领域的初学者,也许我需要用一种非常简单的方式来了解它
整个代码:
ViewController.swift
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var selMake = String()
@IBOutlet var tableView : UITableView!
var transportData : [String] = ["Car", "Plane", "Motorcycle", "Truck" , "Train", "Bicycle" , "Helicopter"]
//////////////////////////////////////////
//viewDidLoad
override func viewDidLoad() {
super.viewDidLoad()
//Register custom cell
var nib = UINib(nibName: "customCell", bundle: nil)
tableView.registerNib(nib, forCellReuseIdentifier: "cell")
}
//Numbers of rows in Section
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.transportData.count
}
//cellForRowAtIndexPath
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
///// Static Cell (no valid for custom cells)
/*
var cell : UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell
cell.textLabel?.text = self.transportData[indexPath.row]
return cell
*/
var cell:customCellTableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as customCellTableViewCell
cell.lblTrans.text = transportData[indexPath.row]
cell.imgTrans.image = UIImage (named: transportData[indexPath.row])
return cell
}
//height
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 90
}
//didSelectRowAtIndexPath
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
println("Fila \(transportData[indexPath.row]) seleccionada")
selMake = transportData[indexPath.row]
performSegueWithIdentifier("modelView", sender: self)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if(segue.identifier == "modelView") {
var vc = segue.destinationViewController as modelViewViewController
vc.selMake = selMake
}
}
import UIKit
class customCellTableViewCell: UITableViewCell {
@IBOutlet weak var imgTrans: UIImageView!
@IBOutlet weak var lblTrans: UILabel!
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
}
}
import UIKit
class modelViewViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
//////////////////////////////////
var selMake = String()
var tableData : [String] = []
@IBOutlet var tableView: UITableView!
//////////////////////////////////
override func viewDidLoad() {
super.viewDidLoad()
//Register custom cell
var nib = UINib(nibName: "customCell2", bundle: nil)
tableView.registerNib(nib, forCellReuseIdentifier: "cell")
switch selMake {
case "Car" :
tableData = ["Ferrari 458", "La Ferrari"]
case "Plane" :
tableData = ["Iberia"]
case "Motorcycle" :
tableData = ["Kawasaki Ninja", "Yamaha Aerox"]
case "Truck" :
tableData = [ "Camion transporte"]
case "Train" :
tableData = [ "Ave" ]
case "Bicycle" :
tableData = ["BMX"]
case "Helicopter" :
tableData = ["HelicopteroCombate"]
default:
println("Sel Make \(selMake)")
}
self.tableView.reloadData()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.tableData.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
/* var cell : UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell
cell.textLabel?.text = self.tableData[indexPath.row]
return cell*/
var cell:customCell2TableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as customCell2TableViewCell
cell.lbl2text.text = self.tableData[indexPath.row]
cell.img2image.image = UIImage (named: tableData[indexPath.row])
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
println("Row \(indexPath.row)selected")
performSegueWithIdentifier("detailView", sender: self)
}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 90
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if(segue.identifier == "detailView") {
var vc = segue.destinationViewController as DetailViewController
}
}
import UIKit
class customCell2TableViewCell: UITableViewCell {
@IBOutlet var lbl2text: UILabel!
@IBOutlet var img2image: 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
}
}
import UIKit
class DetailViewController: UIViewController {
@IBOutlet var imgDetail: UIImageView!
@IBOutlet var lblDetail: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
试试这个。
ModelViewViewController
var selectedImage:String?
var selectedLabel:String?
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
println("Row \(indexPath.row)selected")
selectedImage = self.tableData[indexPath.row]
selectedLabel = self.tableData[indexPath.row]
performSegueWithIdentifier("detailView", sender: self)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if(segue.identifier == "detailView") {
var vc = segue.destinationViewController as DetailViewController
vc.img = selectedImage
vc.lblDetail = selectedLabel
}
}
class DetailViewController: UIViewController {
@IBOutlet var imgDetail: UIImage!
@IBOutlet var lblDetail: UILabel!
var img:String?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
imgDetail = UIImage(named: img)
}
这应该工作。
问题内容: 我一直在寻找答案,但只能找到答案。 我有一个按钮可以选择。没有代码,我通过“接口”构建器进行设置。上,我有一个按钮,可以自行关闭 我想从视图传递回时传递一个字符串。我该怎么做呢?另外,我正在使用swift。 提前致谢! 问题答案: 有两种常见的模式,这两种模式都消除了viewController2明确了解viewController1的需要(这对于可维护性非常重要): 为您的viewC
问题内容: 我正在尝试使用Django和D3.js编写非常基本的条形图。我有一个名为play的对象,其中datetime字段称为date。我想做的是显示按月分组的播放次数。基本上我有两个问题: 我如何按月份将这些分组,并计算当月的播放次数 将这些信息从Django转换为D3可用的最佳方法是什么。 现在,我在这里查看了其他答案,并尝试了 这接近于我想要的信息,但是当我尝试将其输出到模板中时,它在月末
问题内容: 我知道如何使用jinja模板将数据从python传递到javascript,但是我想将javascript变量传递到python。我想这样做而无需重新加载页面。那可能吗? 问题答案: 是的,就像monkut所说的那样-我相信您想使用JSON和Javascript / jQuery。 这将允许从客户端到服务器的通讯,然后再返回。 我发现的最适用的示例是在Flask片段/模式中:http
我正在使用一个表在Jaspersoft Studio 5.6.1中创建简单的报告。 通过 JRBeanCollectionDataSource 从 Java 向此报告发送数据。 在报告中,我已经可以获取此数据 vie 字段:报告- 现在我可以显示输入的数据了。 但如果我想在表中执行,我需要创建数据集(为什么?)并选择“使用用于填充主报告的相同连接”。将相同的字段添加到新数据集没有帮助,也没有为数据
问题内容: 我的应用程序调用了一个返回字典的API。我想将信息从此字典传递给视图中的JavaScript。具体来说,我在JS中使用Google Maps API,因此我希望向其传递包含长/短信息的元组列表。我知道会将这些变量传递给视图,以便可以在HTML中使用它们,但是如何将它们传递给模板中的JavaScript? 问题答案: 将几乎所有Python对象都转换为JavaScript对象的理想方法是
我的应用程序调用一个返回字典的API。我想将这个dict中的信息传递给视图中的JavaScript。我在JS中特别使用了Google Maps API,所以我想传递给它一个包含long/lat信息的元组列表。我知道会将这些变量传递给视图,以便它们可以在HTML中使用,但是我如何才能在模板中将它们传递给JavaScript呢?