Swift протокол пользовательского просмотра всегда ноль - PullRequest
1 голос
/ 14 марта 2020

У меня есть пользовательское представление CustomSegmentedControl в моем приложении, протокол которого с измененной функцией индекса, как показано ниже,

protocol SegmentControllerDelegate:class  {
    func indexChanged(index : Int)
}

class CustomSegmentedControl: UIView {

    weak var delegate  : SegmentControllerDelegate?

    @objc func buttonAction(sender:UIButton) {
        for (buttonIndex, btn) in buttons.enumerated() {
            btn.setTitleColor(textColor, for: .normal)
            if btn == sender {
                let selectorPosition = frame.width/CGFloat(buttonTitles.count) * CGFloat(buttonIndex)
                selectedIndex = buttonIndex
               //delegate?.changeToIndex(index: buttonIndex)
                if(delegate != nil){
                    delegate?.indexChanged(index: buttonIndex)
                }else{
                    print(buttonIndex)
                }
                UIView.animate(withDuration: 0.3) {
                    self.selectorView.frame.origin.x = selectorPosition
                }
                btn.setTitleColor(selectorTextColor, for: .normal)
            }
        }
    }

Я добавил представление в свой ViewController Mail и установите класс в мое собственное представление и создайте для него выход и используйте протокол, как показано ниже,

import UIKit

class Mail: UIViewController, SegmentControllerDelegate {

    func indexChanged(index: Int) {
        print(index)
        switch index {
        case 0:
            container.bringSubviewToFront(inbox)
            break
            case 1:
            container.bringSubviewToFront(outbox)
            break
        default:
            break
        }
    }




    @IBOutlet weak var segment: CustomSegmentedControl!{
        didSet{
            segment.setButtonTitles(buttonTitles: ["First","Second"])
            segment.selectorTextColor = .orange
            segment.selectorViewColor = .orange

        }
    }


    @IBOutlet weak var container: UIView!

    var inbox  : UIView!
    var outbox : UIView!
    override func viewDidLoad() {
        super.viewDidLoad()

        segment.delegate = self
        inbox = Inbox().view
        outbox = GPS().view
        container.addSubview(inbox)
        container.addSubview(outbox)


    }

Но протокол всегда равен нулю и функция никогда не вызывается!?, Что я отсутствует здесь?

Любая помощь будет высоко ценится

...