2017-05-17 6 views
0

In Swift 3, UIImageView(named: string_of_image) nicht zugewiesen. Andere ähnliche Frage verwendet image.xcassets, um Bild zu speichern, aber ich verwende Assets.xcassets. Vielleicht hat es einen Fehler verursacht, aber ich glaube nicht, dass es nicht das Hauptproblem ist. Hier ist mein Code:UIImage (benannt: string) ist nicht zugewiesen

contentViewController.swift

import UIKit 
class ContentViewController: UIViewController { 
    @IBOutlet weak var guideImage: UIImageView! 

    var pageIndex:Int! 
    var imageFile: String = "" { 
     didSet { 
      if let imageView = guideImage { 
       imageView.image = UIImage(named: imageFile) 
      } 

     } 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     print(imageFile) 
     if let image = UIImage(named: imageFile) { 
      guideImage.image = image 

     } 
     else { 
      print("image not assigned") 
     } 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


    /* 
    // MARK: - Navigation 

    // In a storyboard-based application, you will often want to do a little preparation before navigation 
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     // Get the new view controller using segue.destinationViewController. 
     // Pass the selected object to the new view controller. 
    } 
    */ 

} 

GuideViewController.swift

import UIKit 

class GuideViewController: UIViewController, UIPageViewControllerDataSource { 
    var PageViewController: UIPageViewController! 
    var PageImage: Array<String>! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.PageImage = ["페이지1", "페이지2", "페이지3"] 


     let pageController = self.storyboard!.instantiateViewController(withIdentifier: 일반사용자가이드컨트롤러) as! UIPageViewController 
     pageController.dataSource = self 

     if PageImage.count > 0 { 
      let firstController = viewControllerAtIndex(index: 0) 
      let startingViewControllers = [firstController] 
      pageController.setViewControllers(startingViewControllers, direction: UIPageViewControllerNavigationDirection.forward, animated: false, completion: nil) 
     } 

     self.PageViewController = pageController 
     addChildViewController(self.PageViewController!) 
     self.view.addSubview(self.PageViewController!.view) 
     self.PageViewController!.didMove(toParentViewController:self) 


     let appearance = UIPageControl.appearance() 
     appearance.pageIndicatorTintColor = UIColor.gray 
     appearance.currentPageIndicatorTintColor = UIColor.white 
     appearance.backgroundColor = UIColor.darkGray 


    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


    private func viewControllerAtIndex (index : Int) -> ContentViewController { 

     let vc : ContentViewController = self.storyboard?.instantiateViewController(withIdentifier: 페이지컨텐츠뷰) as! ContentViewController 

     vc.pageIndex = index 
     vc.imageFile = self.PageImage[index] as String 

     return vc 
    } 

    /** 
    * 이전 ViewPageController 구성 
    */ 
    func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? { 

     let vc = viewController as! ContentViewController 
     var index = vc.pageIndex as Int 

     if(index == 0 || index == NSNotFound) { 
      return nil 
     } 

     index = index-1 

     vc.guideImage.image = UIImage(named: self.PageImage[index]) 
     return self.viewControllerAtIndex(index: index) 
    } 


    /** 
    * 이후 ViewPageController 구성 
    */ 
    func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? { 

     let vc = viewController as! ContentViewController 

     var index = vc.pageIndex as Int 

     if(index == NSNotFound) { 
      return nil 
     } 

     index += 1 

     if (index == self.PageImage.count) { 
      return nil 
     } 

     vc.guideImage.image = UIImage(named: self.PageImage[index]) 

     return self.viewControllerAtIndex(index:index) 
    } 


    /** 
    * 인디케이터의 총 갯수 
    */ 
    func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int { 
     return self.PageImage.count 
    } 


    /** 
    * 인디케이터의 시작 포지션 
    */ 
    func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int { 
     return 0 
    } 


    /* 
    // MARK: - Navigation 

    // In a storyboard-based application, you will often want to do a little preparation before navigation 
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     // Get the new view controller using segue.destinationViewController. 
     // Pass the selected object to the new view controller. 
    } 
    */ 

} 

Wenn Sie weitere Informationen benötigen, lassen Sie es mich wissen.

(Gelöst) Bei UIImage (genannt: StringOfFile) sollte StringOfFile Englisch sein ... Es könnte jemand hilfreich sein, mit wie diese Probleme bekam

+0

Bitte versuchen Sie, ein bestimmtes Codesegment hinzuzufügen. –

+0

verwenden Sie Standard-Assets, die bereits im Projekt vorhanden sind oder haben Sie benutzerdefinierte erstellt? und stellen Sie sicher, dass beide Bildnamen in Assets und Code identisch sind! – Lion

+0

@Lion Ich verwende Standard-Assets und der Name des Bildes ist genau gleich ... Ich habe kopiert und eingefügt! –

Antwort

1

eine Erweiterung der Datei hinzuzufügen. z.B. ["페페지 1.png", "페페지 2.jpg", "페페지 3.gif"]

+0

Es funktioniert nicht ... in meinem Code, String "Bild nicht zugewiesen" auf der Konsole gedruckt, wenn das Bild Null ist. Diese Nachricht druckt immer noch –

+0

also, haben Sie versucht, die Bilder als Bilder hinzuzufügen? nicht als Saiten? – Vyacheslav

+0

Ich löste Problem .... Xcode nicht utf-8 basierte Bild Dateiname gefunden !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!! **** –

Verwandte Themen