Ich versuche, Daten von der ausgewählten Zelle einer Tabellenansicht "Events" an einen View Controller "Details" zu übergeben. Ich habe mir verschiedene Fragen angesehen, die meinen ähneln, aber ich kann es nicht korrekt auf meinen Code anwenden. Ich habe auch Etiketten anstelle eines Untertitel-Stils verwendet. Es gibt auch ein Bild, das übergeben werden muss.Probleme bei der Übergabe von Daten aus TableViewCell-Labels an einen ViewController
meiner Ansicht-Controller sieht wie folgt aus:
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet var tableView: UITableView!
var names = ["BTown Diner", "Dunnkirk", "Chocolate Mousse", "Lil Wayne", "Annie", "Campus Squad Social"]
var details = ["Free drink with meal after 12 AM", "LADIES drink free", "10% off all ice cream!", "Lil 500 concert", "an IU Theater Production", "Bring your Squad to the Campus Squad Social"]
var images = [UIImage(named: "btown"), UIImage(named: "dunn"), UIImage(named: "choco"), UIImage(named: "lilwayne"), UIImage(named: "default"), UIImage(named: "default")]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return names.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = self.tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! CustomCell
cell.name.text = names[indexPath.row]
cell.detail.text = details[indexPath.row]
cell.photo.image = images[indexPath.row]
return cell
}
var valueToPass:String!
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
println("You selected cell #\(indexPath.row)!")
// Get Cell Label
let indexPath = tableView.indexPathForSelectedRow();
let currentCell = tableView.cellForRowAtIndexPath(indexPath!) as UITableViewCell!;
valueToPass = currentCell.textLabel.text
performSegueWithIdentifier("detailsSegue", sender: self)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "detailsSegue") {
// initialize new view controller and cast it as your view controller
var viewController = segue.destinationViewController as detailsViewController
// your new view controller should have property that will store passed value
viewController.passedValue = valueToPass
}
}
}
und hier ist meine customCell.swift Datei:
import UIKit
class CustomCell: UITableViewCell {
@IBOutlet var photo: UIImageView!
@IBOutlet var name: UILabel!
@IBOutlet var detail: 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
}
}
Ich bin sehr neu zu Swift, und es hat sich als sehr anspruchsvoll sein, mich. Ich bin wirklich kein Programmierer, aber ein Projekt verlangt, dass ich etwas von der Programmierung für eine Anwendung abschließe, für die ich der UI/UIX-Designer bin. Danke im Voraus für Ihre Hilfe!
Hmm, das schien wie es für eine Sekunde funktioniert, dann wurde ich mit meinem Lieblingssignal SIGABRT Fehler zurückgegeben. Würdest du das tun? Ich weiß in der Vergangenheit, wenn dies passiert ist, ist es normalerweise ein Problem mit der Namensgebung? Das ist schwer, ha. –
Verfolgen Sie das Fehlerprotokoll in Ihrer Konsole, um zu sehen, wo das SIGABRT passiert ist. –