我正在学习如何在viewcontrollers之间传递对象数据,我的来源是:
首先是代表Flyer对象的类
class Flyer{
var title: String!
var desc: String!
var imageUrl: String!
init(dictionary: [String: AnyObject]) {
title = dictionary["title"] as? String
desc = dictionary["desc"] as? String
imageUrl = dictionary["imageUrl"] as? String
}
}
现在是mainViewController类:
class MainViewController: UIViewController, UITableViewDataSource {
@IBOutlet var tableview:UITableView!
let apiClient = ApiClient()
var flyers: [Flyer]!
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
apiClient.mainService.getList() { flyers, error in
if flyers != nil {
self.flyers = flyers
self.tableview.reloadData()
} else {
print("error: \(error)")
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.flyers?.count ?? 0
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) ->UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("mainObjectCell") as! MainTableViewCell
cell.mainObject = self.flyers?[indexPath.row]
return cell
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "detailSegue" {
let detailViewController = segue.destinationViewController as! DetailMainViewController
if let indexPath = tableView.indexPathForCell(sender as! MainTableViewCell) {
detailViewController.detailString = self.flyers?[indexPath.row]
}
}
}
}
这个类的输出是一个错误,模糊地使用了tableview(_:numbersOfRowsInSection:)在let indexPath中
detailViewController类:
class DetailMainViewController: UIViewController {
@IBOutlet weak var detailMainLabel: UILabel!
var detailString: String?
var receivedCellIndex = 0
override func viewDidLoad() {
super.viewDidLoad()
detailMainLabel.text = detailString
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
我想知道如何解决mainViewController类中的错误以及如何将flyer对象的desc属性传递给detailViewController并在标签字段中显示