0

我正在尝试分 4 个步骤创建验证过程,为了使我的代码更高效,我决定使用子视图并相应地更新 UI。我设法将我的子视图添加到我的 MasterView,但是,我无法单击我的子视图中的按钮。

我已经检查了视图层次结构,我的按钮顶部没有任何内容。我还尝试以编程方式添加操作,重新添加按钮,但我无法使其工作。我是快速开发的新手,所以可能我遗漏了一些东西。

子视图代码

protocol IdentityVerificationIntroChildViewControllerDelegate{
    func startVIProcess(_ sender: Any)
}

class IdentityVerificationIntroChildViewController: UIView{
    
    @IBOutlet var contentView: UIView!
    var delegate: IdentityVerificationIntroChildViewControllerDelegate?
    @IBOutlet weak var mStartVIBtn: UIButton!
    
    override init(frame: CGRect){
        super.init(frame: frame)
        commonInit()
    }
    
    required init?(coder aDecoder: NSCoder){
        super.init(coder: aDecoder)
        commonInit()
    }
    
    
    private func commonInit(){
        Bundle.main.loadNibNamed("IdentityVerificationIntroChildView", owner: self, options: nil)
        mStartVIBtn.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)
        addSubview(contentView)
        contentView.frame = self.bounds
        contentView.autoresizingMask = [.flexibleHeight, .flexibleWidth]


    }
    
    @objc func buttonAction(sender: UIButton!) {
        print("works")
    }
    
}

主视图代码

final class MasterIdentityVerificationViewController: UIViewController {

    @IBOutlet weak var mContainerView: UIView!
    @IBOutlet weak var mStepIndicator: StepIndicatorView!
    
    private var currentView: UIView?


    override func viewDidLoad() {
        super.viewDidLoad()
        setChildView(subView: IdentityVerificationIntroChildViewController())
    }
    
    private func setChildView(subView: UIView){
        currentView?.removeFromSuperview()
        currentView = subView
        currentView?.translatesAutoresizingMaskIntoConstraints = false
        guard let currentView = currentView else { return }
        mContainerView.addSubview(currentView)
        NSLayoutConstraint.activate([
            currentView.topAnchor.constraint(equalTo: mContainerView.topAnchor),
            currentView.trailingAnchor.constraint(equalTo: mContainerView.trailingAnchor),
            currentView.leadingAnchor.constraint(equalTo: mContainerView.leadingAnchor),
            currentView.bottomAnchor.constraint(equalTo: mContainerView.bottomAnchor)
        ])
    }
}


extension MasterIdentityVerificationViewController: IdentityVerificationIntroChildViewControllerDelegate{
    func startVIProcess(_ sender: Any) {
        performSegue(withIdentifier: "fromVIIntroToVIIDCapture", sender: sender)
        print("adfsdfs")
    }
    

}

查看层次结构,有问题的按钮被突出显示

绿色区域是子视图被切换的地方

我真的很感激任何帮助。谢谢

4

0 回答 0