2015-07-09 3 views
0

У меня есть изображения для @ 1 @ 2 и @ 3 в Xcassets, и я пытаюсь загрузить изображение на страницу прокрутки, используя приведенный ниже код, который переключает изображение из-за возраста его , Страница определяется положением, а оператор switch вызывается в функции viewWillLoad. Изображения не загружаются, но звуки работают, поэтому я знаю, что это проблема с загрузкой изображения. Вы можете помочь?Загрузить изображение из Xcassets с помощью оператора switch

override func viewDidDisappear(animated: Bool) { 
    self.imageView.removeFromSuperview() 
    self.imageView.image = nil 
} 



override func viewWillAppear(animated: Bool) { 

    showImageView() 

    let tapGestureImage = UITapGestureRecognizer(target: self, action: Selector("handleTapGestureImage:")) 
    imageView.addGestureRecognizer(tapGestureImage) 
    imageView.userInteractionEnabled = true 
} 




// MARK: BWWalkthroughPage Implementation 

func walkthroughDidScroll(position: CGFloat, offset: CGFloat) { 

    // getting the page number from the scroll position. First page loads as nil so want it to be zero. 

    screenPage = Int(((position/view.bounds.size.width) + 1) - 1) 
} 



func showImageView() { 

    // change imageView in bundle depending on which scrollview page you are. 
    switch screenPage { 

    case 0: 

     self.imageView.image = UIImage(named: "Aligator", inBundle: NSBundle.mainBundle(), compatibleWithTraitCollection: self.traitCollection) 
     self.view.addSubview(imageView) 

    case 1: 

     self.imageView.image = UIImage(named: "Bear", inBundle: NSBundle.mainBundle(), compatibleWithTraitCollection: self.traitCollection) 
     self.view.addSubview(imageView) 

    default: 
     self.imageView.image = nil 
    } 
} 

ответ

1

Несколько вещей для вас важны для понимания. Вам не нужно добавлять/удалять изображение из иерархии представлений снова и снова. Достаточно просто позвонить imageView.image = nil.

Второе, что вам не нужно использовать полный метод UIImage(named:inBundle:compatibleWithTraitCollection:). Вы должны иметь возможность просто использовать UIImage(named:). Если вы обнаружите, что вам нужно использовать первое, вы можете принимать большие укусы, чем вы можете справиться на этом этапе своей карьеры.

Третье, что, когда вы переопределяете метод, вы должны называть супер в 99% случаев.

Вот пример, который должен работать:

import UIKit 

class MyViewController: UIViewController { 

    override fun viewDidLoad() { 
     super.viewDidLoad() 
     let gestureRecognizer = UITapGestureRecognizer(target: self, action: Selector("handleTapGestureImage:")) 
     imageView.addGestureRecognizer(gestureRecognizer) 
     imageView.userInteractionEnabled = true 
    } 

    override func viewDidDisappear(animated: Bool) { 
     super.viewDidDisappear(animated: animated) 
     self.imageView.image = nil 
    } 

    override func viewWillAppear(animated: Bool) { 
     super.viewWillAppear(animated: animated) 
     showImageView() 
    } 

    func walkthroughDidScroll(position: CGFloat, offset: CGFloat) { 
     screenPage = Int(((position/view.bounds.size.width) + 1) - 1) 
    } 

    func showImageView() { 
     switch screenPage { 
     case 0: 
      imageView.image = UIImage(named: "Aligator") 
     case 1: 
      imageView.image = UIImage(named: "Bear") 
     default: 
      imageView.image = nil 
     } 
    } 
} 
+0

Спасибо Я сделал это, но ImageView остается, как Aligator во всех видах. – SashaZ

+0

Тогда с вашими выходными соединениями явно что-то не так. Вы вообще используете соединения IBOutlet? Убедитесь, что наш xib или раскадровка хороша. – bsarrazin

+0

Я проверил его, и соединения хороши. Если бы они не звучали, звуки не работали, которые срабатывали одинаково. В качестве побочного примечания все 26 графических экранов подключены к одному изображению в этом классе. Только один не стреляет, но подключен, и я должен заглянуть в него сегодня вечером. – SashaZ

Смежные вопросы