2016-09-20 4 views
1

Я выполнил весь необходимый код для работы делегата. В моем ViewController: class ViewController: UIViewControllerCustomViewDelegate У меня есть это:Swift Делегат не называется

override func viewDidLoad() { 
      super.viewDidLoad() 
      let myCustomView = Bundle.main.loadNibNamed("ImageHeaderView", owner: self, options: nil)?[0] as! ImageHeaderView 
     myCustomView.delegate = self 

     } 
func goToNextScene() { 
     print("GOTOSCENE2") 
      } 

И в моей настраиваемое представление у меня есть это:

import UIKit 

protocol CustomViewDelegate: class {   // make this class protocol so you can create `weak` reference 
    func goToNextScene() 
} 

@available(iOS 10.0, *) 
class ImageHeaderView : UIView { 

    @IBOutlet weak var followme: UISwitch! 
    @IBOutlet weak var profileImage : UIImageView! 
    @IBOutlet weak var backgroundImage : UIImageView! 

    weak var delegate: CustomViewDelegate? 

    override func awakeFromNib() { 
     super.awakeFromNib() 
     self.backgroundColor = UIColor(hex: "E0E0E0") 
     self.profileImage.layer.cornerRadius = self.profileImage.frame.size.height/2 
     self.profileImage.clipsToBounds = true 
     self.profileImage.layer.borderWidth = 1 
     self.profileImage.layer.borderColor = UIColor.white.cgColor 
     //self.profileImage.setRandomDownloadImage(80, height: 80) 
     //self.backgroundImage.setRandomDownloadImage(Int(self.frame.size.width), height: 100) 
    } 
    @IBAction func followme(_ sender: AnyObject) { 
     UserDefaults.standard.set(followme.isOn, forKey: "followme") 
    } 
    @IBAction func logout(_ sender: AnyObject) { 
     delegate?.goToNextScene() 
     print("GOTOSCENE") 
    } 
} 

Существует нет ошибок, брошенные, но когда я нажимаю/нажмите кнопку, Ничего не произошло. Он просто печатает «GOTOSCENE».

+0

удаление слабых не решит проблему. слабый только защищает делегата от доступа после освобождения (т. е. делегат будет равен нулю, если делегат был освобожден) – giorashc

+0

Не добавлено ли myCustomView в представление? Может быть, у вас более одного экземпляра? – tonik12

+0

Я удалил класс и слабый. Все еще не работает. –

ответ

3

Что я чувствую

Вашей проблемы здесь

override func viewDidLoad() { 
      super.viewDidLoad() 
      let myCustomView = Bundle.main.loadNibNamed("ImageHeaderView", owner: self, options: nil)?[0] as! ImageHeaderView 
     myCustomView.delegate = self 

     } 

Я думаю, что вы добавили imageHeaderview из раскадровки и viewdidload вы создаете новый объект ImageHeaderView и назначение делегата вновь созданный объект.

Попытайтесь вывести свой ImageHeaderView и назначить делегат выведенному объекту.

Надеюсь, это исправит вашу проблему.

+0

Я не могу перетащить кнопку ImageViewHeaderView на мой ViewController –

+0

, а не на кнопку. Перетащить весь ImageViewHeaderView –

+0

Мне очень жаль. Я действительно не знаю, как добавить его. Обычно я держу CTRL и перетаскиваю его в viewcontroller, но, похоже, он не может добавить его. –

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