Ich versuche, die Informationen weitergeben, die zu einem UIViewController in jeder einzelnen Zelle sind wie Sie in diesen BildernPassing Daten von Tableview Uiviewcontroller swift 3
Dies ist der Code des UITableViewController sehen :
import UIKit
import MapKit
import CoreLocation
class CourseClass: UITableViewController, CLLocationManagerDelegate {
@IBOutlet weak var map: MKMapView!
let manager = CLLocationManager()
var place = ["Caffè Spagar", "Duks", "Posta station", "Barnum", "Elephant Club", "Cinema", "Space", "Andromeda", "Rodolf", "Devil Chair"]
var rows = 0
override func viewDidLoad() {
super.viewDidLoad()
manager.delegate = self
manager.desiredAccuracy = kCLLocationAccuracyBest
manager.requestWhenInUseAuthorization()
manager.startUpdatingLocation()
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
insertRowsMode3()
}
func insertRowsMode2() {
for i in 0..<place.count {
insertRowMode2(ind: i, str: place[i])
}
}
func insertRowMode2(ind:Int,str:String) {
let indPath = IndexPath(row: ind, section: 0)
rows = ind + 1
tableView.insertRows(at: [indPath], with: .right)
}
func insertRowsMode3() {
rows = 0
insertRowMode3(ind: 0)
}
func insertRowMode3(ind:Int) {
let indPath = IndexPath(row: ind, section: 0)
rows = ind + 1
tableView.insertRows(at: [indPath], with: .right)
guard ind < place.count-1 else { return }
DispatchQueue.main.asyncAfter(deadline: .now()+0.15) {
self.insertRowMode3(ind: ind+1)
}
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return rows
}
public override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! MyTableViewCell
cell.myImage.image = UIImage(named: (place[indexPath.row] + ".png"))
cell.myLabel.text = place[indexPath.row]
return (cell)
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "goToLast" , sender: place[indexPath.row])
}
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 100
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let location = locations[0]
let span:MKCoordinateSpan = MKCoordinateSpanMake(0.01, 0.01)
let myLocation:CLLocationCoordinate2D = CLLocationCoordinate2DMake(location.coordinate.latitude, location.coordinate.longitude)
let region:MKCoordinateRegion = MKCoordinateRegionMake(myLocation, span)
map.setRegion(region, animated: true)
self.map.showsUserLocation = true
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let guest = segue.destination as! FinalClass
guest.local = sender as! String
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
und das ist der Code des UIViewController ist:
import UIKit
class FinalClass: UIViewController {
@IBOutlet weak var lastLabel: UILabel!
@IBOutlet weak var addressLabel: UILabel!
@IBOutlet weak var typeLabel: UILabel!
@IBOutlet weak var lastImage: UIImageView!
var local = "Zone"
var localImage = UIImage()
override func viewDidLoad() {
super.viewDidLoad()
lastLabel.text = local
addressLabel.text = local
typeLabel.text = local
lastImage.image = localImage
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func lastBack(_ sender: Any) {
dismiss(animated: true, completion: nil)
}
}
für jetzt kann ich nur den "Namen" aber nicht den Rest weitergeben, kann mir jemand mit einem Beispielcode helfen?
Sie haben nur den Namen in der Datenquelle. Um mehr Parameter zu haben, benötigen Sie eine benutzerdefinierte Struktur oder Klasse als Modell. – vadian
danke @vadian – bero