在swift中的viewcontrollers之间传递对象数据

时间:2015-10-17 11:32:37

标签: ios swift

我正在学习如何在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并在标签字段中显示

0 个答案:

没有答案