MainSideController具有功能toggleSideMenu。但是当我在ContentViewController中点击配置文件ButtonTapped时。显示在调试菜单中被点击的按钮,但侧面菜单没有滑入。
import UIKit
class MainSideViewController: ContentViewController{
@IBOutlet weak var sideMenuContainer: UIView!
@IBOutlet weak var sideMenuViewLeadingConstraint: NSLayoutConstraint!
@IBOutlet weak var contentViewLeadingConstraint: NSLayoutConstraint!
var sideMenuVisible = false
override func viewDidLoad() {
super.viewDidLoad()
sideMenuViewLeadingConstraint.constant = 0 - self.sideMenuContainer.frame.size.width
}
@objc func toggleSideMenu(fromViewController: UIViewController) {
if(sideMenuVisible){
UIView.animate(withDuration: 0.5, animations: {
self.sideMenuViewLeadingConstraint.constant = 0 - self.sideMenuContainer.frame.size.width
self.contentViewLeadingConstraint.constant = 0
self.view.layoutIfNeeded()
})
} else {
self.view.layoutIfNeeded()
UIView.animate(withDuration: 0.5, animations: {
self.sideMenuViewLeadingConstraint.constant = 0
self.contentViewLeadingConstraint.constant = self.sideMenuContainer.frame.size.width
self.view.layoutIfNeeded()
})
}
sideMenuVisible = !sideMenuVisible
}
}
import UIKit
class ContentViewController: UIViewController {
let profileButton = UIButton(type: .custom)
override func viewDidLoad() {
super.viewDidLoad()
profileButton.setImage(UIImage(named: "hamburger") , for: .normal)
profileButton.contentMode = .scaleAspectFit
profileButton.translatesAutoresizingMaskIntoConstraints = false
// function performed when the button is tapped
profileButton.addTarget(self, action: #selector(profileButtonTapped(_:)), for: .touchUpInside)
// Add the profile button as the left bar button of the navigation bar
let barbutton = UIBarButtonItem(customView: profileButton)
self.navigationItem.leftBarButtonItem = barbutton
// Set the width and height for the profile button
NSLayoutConstraint.activate([
profileButton.widthAnchor.constraint(equalToConstant: 35.0),
profileButton.heightAnchor.constraint(equalToConstant: 35.0)
])
// Make the profile button become circular
profileButton.layer.cornerRadius = 35.0 / 2
profileButton.clipsToBounds = true
}
@IBAction func profileButtonTapped(_ sender: Any){
print("Button tapped")
if let mainVC = self.navigationController?.tabBarController? .parent as? MainSideViewController {
mainVC.toggleSideMenu(fromViewController: self)
}
}
}
我将sideMenuViewLeadingConstraint添加到viewDidLoad。 它仍然没有用。我也添加了切换功能。它仍然没有滑入和滑出。
我希望个人资料按钮可以触发切换功能,并且侧面菜单可以像推特里里外外一样侧入。
答案 0 :(得分:0)
代替sideMenuViewLeadingConstraint.constant = 0-我使用的MainSideViewController中的self.sideMenuContainer.frame.size.width NotificationCenter.default.addObserver(自身,选择器:#selector(toggleSideMenu),名称:NSNotification.Name(“ ToggleSideMenu”),对象:nil)
并将其放入 @IBAction func profileButtonTapped(_ sender:Any){ print(“点击按钮”)
NotificationCenter.default.post(名称:NSNotification.Name(“ ToggleSideMenu”),对象:无) } }