【发布时间】:2017-02-26 21:23:37
【问题描述】:
我试图从我的视图控制器中调用一个数组,然后从该数组中设置包含对象的文本。但是当我执行 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!
}
【问题讨论】:
-
认为
ViewController()的两个实例彼此不同,并且与storyboard 或xib 中的ViewController实例不同。那就是问题所在。您需要对视图控制器的实际引用。 -
var mainController = ViewController()的行是什么?它似乎未使用,ViewController类是什么?var movie = ViewController().self.movieArray[0]试图做什么?我猜这是导致问题的行,但要清楚,请指出导致异常的行并将 full 错误消息添加到您的问题中。