gpt4 book ai didi

swift - 委托(delegate)(创建 sideMenu 时,委托(delegate)?返回 nil)

转载 作者:行者123 更新时间:2023-11-30 11:19:05 25 4
gpt4 key购买 nike

伙计们。我正在寻求帮助。这似乎是一个非常简单的任务,但我可以解决一整天。我正在尝试使用容器 View 创建侧面菜单。当用户按下“更多”按钮(barButtonItem)时,整个 View 向右滑动并出现菜单表。我知道如何使用通知来实现它。但我想通过委托(delegate)来解决这个问题。这是我的 Storyboard。 enter image description here

和代码:

import UIKit

class RootViewController: UIViewController, SideMenuDelegate {

@IBOutlet weak var leading: NSLayoutConstraint!

var sideMenuIsOpen = false
var sideMenu: MainViewController?

override func viewDidLoad() {
super.viewDidLoad()

sideMenu?.delegate = self
}

func openSideMenu() {
toggleSideMenu()
}

func toggleSideMenu() {
if sideMenuIsOpen {
leading.constant = 0
} else {
leading.constant = 240
}
}
}

以及: 导入 UIKit

protocol SideMenuDelegate {
func openSideMenu()
}

class MainViewController: UIViewController {

var delegate: SideMenuDelegate?

@IBAction func toggleSideMenu(_ sender: UIBarButtonItem) {
if let delegateUnwrapped = delegate {
delegateUnwrapped.openSideMenu()
} else {
print("nil")
}
}
override func viewDidLoad() {
super.viewDidLoad()

BackgroundImageView.createBackground(insideView: self, image: .mainViewBackground)

}

}

谢谢!

最佳答案

这个

var sideMenu: MainViewController? // is nil 

override func viewDidLoad() {
super.viewDidLoad()

sideMenu?.delegate = self
}

没有对当前显示的 main 的引用,当您从根呈现 main 时,它是 nil 给它引用

关于swift - 委托(delegate)(创建 sideMenu 时,委托(delegate)?返回 nil),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51480678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com