通过segue

时间:2016-07-17 19:11:09

标签: ios swift tableviewcell

我正在努力将我从数据库中获取的数据传递到详细视图,其中显示了更多信息。在我的视图控制器中,我有一个方法GET()从数据库中获取数据。我正在努力尝试通过segue传递这些数据。我还有一个Cell.swift文件,它由四个标签组成。我只是试图将用户在表格视图单元格中单击的数据传递给detailviewcontroller。

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource{

@IBOutlet var TableView: UITableView!

@IBAction func refresh(sender: AnyObject) {
    get()
}
var values:NSArray = []

override func viewDidLoad() {
    super.viewDidLoad()
    get();
}

func get(){
    let url = NSURL(string: "http://get.php")
    let data = NSData(contentsOfURL: url!)
    values = try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSArray
    TableView.reloadData()
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return values.count;
}

// This function is called before the segue
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    // get a reference to the second view controller
    let secondViewController = segue.destinationViewController as! DetailedViewController

    // set a variable in the second view controller with the String to pass
    secondViewController.d = "ddd";
}


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! SpecialCell
    let maindata = values[indexPath.row]
    cell.RecipeName.text = maindata["RecipeName"] as? String
    cell.IngredientsList.text = maindata["IngredientList"] as? String
    cell.Method.text = maindata["Method"] as? String
    cell.Rec.text = maindata["PhotoURL"] as? String

    var urlString = maindata["PhotoURL"] as? String

    var url = NSURL(string: maindata["PhotoURL"]as! String)!

    var data = NSData(contentsOfURL: url)!

    cell.DaImage.image = UIImage(data: data)

    return cell;

}

1 个答案:

答案 0 :(得分:0)

您可以在准备segue方法中获取tableViewCell,方法是获取所选行并使用该indexPath获取如下所示的选定单元格

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    // get a reference to the second view controller
    let secondViewController = segue.destinationViewController as! DetailedViewController

    if let indexPath = tableView.indexPathForSelectedRow {
        let cell = tableView.cellForRow(at: indexPath) as? SpecialCell

        detailViewController.data = cell?.data
        detailViewController.anyotherdata = cell?.anyotherdata
    }
}