2016-07-17 2 views
0

Я изо всех сил пытаюсь передать данные, которые я получил из своей базы данных, до подробного представления, в котором показана дополнительная информация. По моему мнению, у контроллера есть метод GET(), который получает данные из базы данных. Я изо всех сил пытаюсь передать эти данные через segue. У меня также есть файл Cell.swift, который состоит из четырех меток. Я просто пытаюсь передать данные, которые пользователь нажимает в ячейке таблицы, на элемент управления подробным обзором.Передача данных базы данных через segue

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; 

} 
+0

где проблема? Точно так же вы устанавливаете 'd', вы также можете установить переменную' values'. – luk2302

+0

bit confused, как бы я это сделал? – Brad

+0

Лучшим будет реализация didSelectRowAtIndexPath, а затем получить элемент и вызвать PerformSegueWithIdentiifer и отправить выбранный элемент в параметре отправителя, а на подготовительном этапе захватить его и отправить его на следующий контроллер представления (также не забудьте проверить на segue . identifier в этом методе) –

ответ

0

Вы можете получить tableViewCell внутри подготовить метод SEGUE, получая выбранную строку и использовать эту 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 
    } 
}