     @IBOutlet weak var messageButton2Constraint: NSLayoutConstraint!
     @IBOutlet weak var messageButton3Constraint: NSLayoutConstraint!
 
-    @IBOutlet var horizontalButtonsLayoutConstraints: [NSLayoutConstraint]!
-    @IBOutlet var verticalButtonsLayoutConstraints: [NSLayoutConstraint]!
+    @IBOutlet var horizontalButtonsLayoutConstraints: [NSLayoutConstraint]?
+    @IBOutlet var verticalButtonsLayoutConstraints: [NSLayoutConstraint]?
     
     // MARK: - Variables
 

        return isHorizontalLayout
    }
    
    // MARK: - NibView

    override func updateView() {
        super.updateView()
        let buttonTitle = button0Title ?? (hasCancel ? ButtonTitle.cancel : ButtonTitle.ok)
        button0.setTitle(buttonTitle, forState: .Normal)
        button1.hidden = button1Title == nil
        button2.hidden = button2Title == nil
        button3.hidden = button3Title == nil
        messageLabel.activateOnlyConstraintsWithFirstVisibleInViews([button3, button2, button1, button0])
        if isHorizontalLayout {
            NSLayoutConstraint.activateConstraints(horizontalButtonsLayoutConstraints)
            NSLayoutConstraint.deactivateConstraints(verticalButtonsLayoutConstraints)
        } else {
            NSLayoutConstraint.activateConstraints(verticalButtonsLayoutConstraints)
            NSLayoutConstraint.deactivateConstraints(horizontalButtonsLayoutConstraints)
        }
    }
    
}

        protocolDelegate?.action3Button(button)
    }
    
    // MARK: - Private variables and functions

    private var isHorizontalLayout: Bool {
        var isHorizontalLayout = false
