ios - ViewController 的属性为零

标签 ios swift

我想做 SideMenu。
我的 HomeViewController 代码:

lazy var sideMenu: SideMenuViewController = {
   let menu = SideMenuViewController()
    menu.stayViewObj = self
    return menu
}()  

菜单按钮的操作:

@objc func handleMenuBtn () {
    sideMenu.openMenu()
}

SideMenu 的 viewDidLoad :

override func viewDidLoad(){
        constraintLeadingPropertiesView.constant = -viewSelectProperties.frame.width
} 

SideMenu 的 openMenu 方法:

 func openMenu() {
        debugPrint(">>>>openMenu")
        let statusBarHeight = UIApplication.shared.statusBarFrame.height
        let yCoordinate: CGFloat = statusBarHeight + 44.0

        guard let window = UIApplication.shared.keyWindow else { return }
        view.backgroundColor = UIColor(white: 0, alpha: 0.5)
        view.alpha = 0
        view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(closeMenu)))
        view.frame = window.frame

        startFrame = CGRect(x: 0, y: yCoordinate, width: 0, height: window.frame.height - yCoordinate)
        view.frame = startFrame!

        window.addSubview(view)


        UIView.animate(withDuration: 0.7, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseOut, animations: {

            self.view.alpha = 1
            self.view.frame = CGRect(x: 0, y: yCoordinate, width: window.frame.width - 80, height: window.frame.height - yCoordinate)

        }, completion: nil)
    }

现在,我得到 constraintLeadingPropertiesView=nil 并且 SideMenuController 的所有其他属性也 nil 接受 stayViewObj .
所以 viewDidLoad 会崩溃。
如何解决这个问题...任何建议对我也有帮助..
谢谢!

最佳答案

需要instantiateInitialViewController而不是通过lazy Var创建对象。

let menu = UIStoryboard.init(name: "Main", bundle: nil).instantiateInitialViewController() as? SideMenuViewController

关于ios - ViewController 的属性为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50713573/

相关文章:

ios - 如果应用程序位于 iOS 应用程序的前台,Cordova 插件 Firebase 不会收到推送通知

ios - 使 UIBarButtonItem 显示为已禁用?

iOS SwiftUI : ActionSheet custom style

ios - 在 .selected 状态下更改自定义 UIButton 的颜色

ios - 如何在 Apple Watch 应用程序中访问 WKInterfaceLabel 的文本属性

javascript - 在 Swift WKWebView 中捕获 window.postMessage

High Sierra 上的 Swift4 错误,无法解析符号

ios - 切换到横向时,Tableview 将约束更改为全屏

ios - 拖到 View 顶部时,UILongPressGestureRecognizer 在表格 View 中崩溃 - SWIFT

swift - 未检测到 SpriteKit 碰撞