Ich versuche, ein Array von meinem Viewcontroller aus aufzurufen und dann Text von diesem Array, das Objekte enthält, zu setzen. Aber wenn ich das Segment führe, gibt es mir nur einen "Index außerhalb der Reichweite". Ich sehe nicht, was ich falsch gemacht habe. Ich habe auch versucht, das Selbst zu benutzen. Überall im Anruf scheint es aber das Problem zu sein.Warum ist das nicht im Index?
Der variable Film ist, wo ich versuche, nur 1 Film aus dem Array zu bekommen, aber das gleiche Problem besteht fort. Habe ich mit meinem Viewcontroller etwas falsch gemacht oder muss ich einen Wert übergeben?
Detailsviewcontroller ist der Controller für die neue Ansicht und die Tabellenansicht, deshalb habe ich eine andere Klasse innerhalb der Datei erstellt.
Datei: DetailsviewController
import UIKit
class DetailsViewController: UIViewController, UITableViewDataSource,UITabBarDelegate {
@IBOutlet weak var tableView: UITableView!
var mainController = ViewController()
var movie = ViewController().self.movieArray[0]
var titles = ["Title", "Release Date","Genres","OverView"]
override func viewDidLoad() {
super.viewDidLoad()
print(movie)
// Do any additional setup after loading the view.
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return titles.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = self.tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! DetailsCustomcell
cell.detailTitle.text = titles[indexPath.row]
if indexPath.row == 0{
cell.detailContent.text = ""
}
if indexPath.row == 1{
cell.detailContent.text = ""
}
if indexPath.row == 2{
cell.detailContent.text = "Movie genre´s is not fixed yet"
}
if indexPath.row == 3{
cell.detailContent.text = ""
}
return cell
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
}
class DetailsCustomcell: UITableViewCell{
@IBOutlet weak var detailTitle: UILabel!
@IBOutlet weak var detailContent: UILabel!
}
Beachten Sie, dass sich die beiden Instanzen von 'ViewController()' voneinander unterscheiden und sich von der 'ViewController'-Instanz im Storyboard oder Xib unterscheiden. Das ist das Problem. Sie benötigen den tatsächlichen Verweis auf den View-Controller. – vadian
Was ist die Zeile 'var mainController = ViewController()' für? Es scheint unbenutzt und was ist die 'ViewController' Klasse? Was macht 'var movie = ViewController(). Self.movieArray [0]' versuchen zu tun? Ich denke, das ist die Zeile, die das Problem verursacht, aber um klar zu sein, geben Sie bitte an, welche Zeile die Ausnahme verursacht, und fügen Sie die * full * -Fehlermeldung zu Ihrer Frage hinzu. –
Mögliches Duplikat von [Wie teilen Sie Daten zwischen View-Controllern und anderen Objekten in Swift?] (Http://stackoverflow.com/questions/29734954/how-do-you-share-data-between-view-controllers-and -other-objects-in-swift) – brimstone