2017-10-01 7 views
0

J'ai une application Master-Detail où il montre des images de fleurs à partir de la vue Table principale. Je souhaite afficher une image plus grande dans la vue détaillée, mais elle continue à afficher la dernière image. DetailViewController affiche une image du MasterViewController en tant que dernière image.L'image est affichée en dernier lieu à la place de ce qui est cliqué

Peu importe ce qui est cliqué dans MasterViewController, l'image montrant le détail est la dernière image sur la liste de maître ..

override func viewDidLoad() { 
    super.viewDidLoad() 

    imageView1.image = MasterViewController.MyVariables.flowerImage!.first 

Dans le fichier MasterViewController.swift, voici le code:

override public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", 
              for: indexPath) 

    //cell.textLabel!.text = siteNames![indexPath.row] 

    switch (indexPath.section) { 
    case kRedSection: 
    do { cell.textLabel!.text = redFlowers[indexPath.row] 
     cell.detailTextLabel!.text = siteDetailRed![indexPath.row] 



     } 
    case kBlueSection: 
     do { 
     cell.textLabel!.text = blueFlowers[indexPath.row] 
     cell.detailTextLabel!.text = siteDetailBlue![indexPath.row] 

     } 
    default: 
     do { 
     cell.textLabel!.text = "Unknown" 
     cell.detailTextLabel!.text = "Unknown" 

     } 
    } 

    let test = UIImage(named: cell.textLabel!.text!)! 
    cell.imageView!.image = test 

    MyVariables.flowerImage = [test] 
    print("MyVariables.flowerImage", MyVariables.flowerImage) 


    return cell 
} 

Répondre

0

J'ai en quelque sorte débogué à cette fonction. Toutefois, il affiche le message d'erreur erreur fatale: trouvé de manière inattendue nil lors du déballage d'une valeur facultative dans cette ligne de code:

MyVariables.flowerImage = [siteImageRed![indexPath.row]] 

var siteImageRed: [UIImage] = [ 
    UIImage(named: "Gerbera.png")!, 
    UIImage(named: "Peony.png")!, 
    UIImage(named: "Rose.png")!, 
    UIImage(named: "Poppy.png")! 
    ] 


override public func prepare(for segue: UIStoryboardSegue, 
         sender: Any?) { 

    if segue.identifier == "showDetail" { 
     if let indexPath = self.tableView.indexPathForSelectedRow { 
      //let urlString = siteAddresses?[indexPath.row] 

      switch indexPath.section { 
      case 0: 
       do { 
        MyVariables.urlString = [siteAddressesRed![indexPath.row]] 
        //why doesn't this line below not work? 
        MyVariables.flowerImage = [siteImageRed![indexPath.row]] 
        //and this line below works? 
        //MyVariables.flowerImage = [UIImage(named: "Rose.png")!] 

       } 
      case 1: 
       do { 
        MyVariables.urlString = [siteAddressesBlue![indexPath.row]] 

       } 
      default: 
       do { 
        MyVariables.urlString = ["https://en.wikipedia.org/flowers"] 

       } 
      } 


      let controller = (segue.destination as! UINavigationController).topViewController 
       as! DetailViewController 

      controller.detailItem = MyVariables.urlString as [String]! as AnyObject 
      controller.navigationItem.leftBarButtonItem = 
       splitViewController?.displayModeButtonItem 
      controller.navigationItem.leftItemsSupplementBackButton 
       = true 
     } 
    } 
}