Skip to content

When I open the side menu everything in the front view controller class become nil #810

@abdulelah1

Description

@abdulelah1

Hi
When I open the side menu everything in the front view controller class become nil

Here is my code

ResultsViewController.swift
`
class ResultsViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, sideMenuDelegate {

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)

    self.Search()
    print("Collection: \(self.collectionView)") // not nil
    self.collectionView.frame = self.contentView.frame
    
    self.collectionView.register(UINib.init(nibName: "ResultsGridCell", bundle: nil), forCellWithReuseIdentifier: "ResultsGridCell")
    
    let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
    layout.sectionInset = UIEdgeInsets(top: 20, left: 10, bottom: 10, right: 10)
    layout.itemSize = CGSize(width: (self.contentView.frame.size.width - 16), height: 98)
    
    self.listCollectionView = UICollectionView(frame: self.contentView.frame, collectionViewLayout: layout)
    self.listCollectionView?.dataSource = self
    self.listCollectionView?.delegate = self
    self.listCollectionView?.register(UINib.init(nibName: "ResultsCell", bundle: nil) , forCellWithReuseIdentifier: "ResultsListCell")
    self.listCollectionView?.backgroundColor = UIColor.white
    self.listCollectionView?.isHidden = true
    self.view.addSubview(self.listCollectionView!)
}

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(true)
if self.revealViewController() != nil {

        self.filterSideMenuButton.target = self.revealViewController()
        self.filterSideMenuButton.action = "revealToggle:"
        
        self.view.addGestureRecognizer((self.revealViewController()?.panGestureRecognizer())!)
        self.view.addGestureRecognizer((self.revealViewController()?.tapGestureRecognizer())!)
    }
}

func applyFilters(sender: UIButton, rating: NSNumber?, max: NSNumber?, min: NSNumber?) {

    print(self.revealViewController()) // nil
    self.revealViewController()?.revealToggle(true)
    print(self.collectionView) // nil
}

}
`

SideMenuViewController

`@objc
public protocol sideMenuDelegate {
func applyFilters(sender: UIButton, rating: NSNumber?, max: NSNumber?, min: NSNumber?)
func cancelFilters()
}

class SideMenuViewController: UIViewController {

var rating = 0

var myDelegate: sideMenuDelegate?

@IBOutlet weak var rating1: CosmosView!

@IBOutlet weak var rating2: CosmosView!

@IBOutlet weak var rating3: CosmosView!

@IBOutlet weak var rating4: CosmosView!

@IBOutlet weak var rating5: CosmosView!

@IBOutlet weak var maximumTextField: UITextField!

@IBOutlet weak var minimumTextField: UITextField!

@IBOutlet weak var filterCancelationButton: UIButton!

@IBOutlet weak var applyFiltersButton: UIButton!

override func viewDidLoad() {
    super.viewDidLoad()
    
    let ratingTapRecognizer1 = UITapGestureRecognizer()
    ratingTapRecognizer1.addTarget(self, action: #selector(self.ratingTapped(sender:)))
    
    let ratingTapRecognizer2 = UITapGestureRecognizer()
    ratingTapRecognizer2.addTarget(self, action: #selector(self.ratingTapped(sender:)))
    
    let ratingTapRecognizer3 = UITapGestureRecognizer()
    ratingTapRecognizer3.addTarget(self, action: #selector(self.ratingTapped(sender:)))
    
    let ratingTapRecognizer4 = UITapGestureRecognizer()
    ratingTapRecognizer4.addTarget(self, action: #selector(self.ratingTapped(sender:)))
    
    let ratingTapRecognizer5 = UITapGestureRecognizer()
    ratingTapRecognizer5.addTarget(self, action: #selector(self.ratingTapped(sender:)))
    
    self.rating1.addGestureRecognizer(ratingTapRecognizer1)
    self.rating2.addGestureRecognizer(ratingTapRecognizer2)
    self.rating3.addGestureRecognizer(ratingTapRecognizer3)
    self.rating4.addGestureRecognizer(ratingTapRecognizer4)
    self.rating5.addGestureRecognizer(ratingTapRecognizer5)
    
    for i in 1...5 {
       let ratingBar = self.view.viewWithTag(i) as! CosmosView
        ratingBar.settings.filledColor = UIColor.init(red: 40/255, green: 40/255, blue: 40/255, alpha: 1)
        ratingBar.settings.filledBorderColor = UIColor.init(red: 40/255, green: 40/255, blue: 40/255, alpha: 1)
    }
    
    self.filterCancelationButton.layer.borderWidth = 1
    self.filterCancelationButton.layer.borderColor = UIColor.init(red: 230/255, green: 99/255, blue: 69/255, alpha: 1).cgColor
    
    self.applyFiltersButton.addTarget(self, action: #selector(self.applyTapped), for: .touchUpInside)
    
    self.filterCancelationButton.addTarget(self, action: #selector(self.cancelFilters), for: .touchUpInside)
    
}

@objc
func applyTapped(sender: UIButton) {
    
    var max: Int? = nil
    var min: Int? = nil
    
    if self.maximumTextField.text != "" {
        max = Int(self.maximumTextField.text!)
    }
    
    if self.minimumTextField.text != "" {
        min = Int(self.minimumTextField.text!)
    }
    
    myDelegate = ResultsViewController.self()
    myDelegate?.applyFilters(sender: sender, rating: rating as NSNumber, max: max as NSNumber?, min: min as NSNumber?)
    
    
}

}`

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions