2017-10-01 2 views
0

Ich habe eine Master-Detail-App, in der Bilder von Blumen aus der Master-Tabellenansicht angezeigt werden. Ich möchte ein größeres Bild in der Detailansicht anzeigen, aber es zeigt weiterhin das letzte Bild an.Bild wird zuletzt angezeigt, anstatt auf das geklickt zu werden

DetailViewController zeigt ein Bild vom MasterViewController als letztes Bild an. Egal, was in MasterViewController angeklickt wird, wird das Bild auf Detail zeigt das letzte Bild auf der Liste von Master ist ..

override func viewDidLoad() { 
    super.viewDidLoad() 

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

In MasterViewController.swift Datei, hier ist der 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 
} 

Antwort

0

Ich habe es irgendwie auf diese Funktion überprüft. Es wird jedoch ein schwerwiegender Fehler der Fehlermeldung angezeigt: unerwartet wurde beim Entpacken ein optionaler Wert in dieser Codezeile gefunden:

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 
     } 
    } 
} 
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 
     } 
    } 
} 
Verwandte Themen