2017-02-26 70 views
-5

我想從我的viewcontroller調用一個數組,然後從包含對象的數組中設置文本。但是,當我執行segue它只給了我一個「索引超出範圍」我不明白我做錯了什麼。我也嘗試過使用自我。在召集的任何地方,但它似乎是問題。爲什麼這是索引不足?

變量電影是我試圖從數組中獲得1個電影,但同樣的問題仍然存在。我的視圖控制器做錯了什麼,或者我需要傳遞一個值?

Detailsviewcontroller是新視圖和tableview的控制器,這就是爲什麼我在文件內部創建了另一個類。

文件: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! 

} 
+0

考慮到'ViewController()'的兩個實例彼此不同,並且與故事板或xib中的'ViewController'實例不同。那就是問題所在。您需要實際參考視圖控制器。 – vadian

+0

什麼是行'var mainController = ViewController()'for?它看起來沒有用,什麼是'ViewController'類? 'var movie = ViewController()。self.movi​​eArray [0]''試圖做什麼?我想這是導致問題的線路,但要清楚,請指出哪一行導致異常,並將* full *錯誤消息添加到您的問題。 –

+0

[你如何在視圖控制器和Swift中的其他對象之間共享數據?](http://stackoverflow.com/questions/29734954/how-do-you-share-data-between-view-controllers-and -other-objects-in-swift) – brimstone

回答

0

不知道這是什麼:

var mainController = ViewController() 
var movie = ViewController().self.movieArray[0] 

無論如何,ViewController()實例化類的新對象。在那個時候,很可能movieArray從未被初始化,並且沒有任何對象。

+0

啊哈,沒想到!那麼我該如何專門引用視圖控制器? – Pr0tonion

+0

這真的取決於。但是我的質疑將從爲什麼你需要從這個視圖控制器的屬性中獲取'電影'而不是從所有數據源填充'movieArray'開始? – Frankie

+0

爲什麼我需要這部電影的原因是因爲我想讀取數組的內容。 「電影」變量只是我正在測試的東西。我在我的viewcontroller.swift中有一個movieArray,我做了一個get請求,然後用movieobjects填充我的movieArray。當電影被點擊時,我希望顯示該特定電影的詳細信息。 – Pr0tonion

相關問題