Search code examples
iosswiftuiviewxib

How to navigate To a ViewController From xib file of a UIView Class


I have a view in my xib file which contain buttons. i want to move to a ViewController when i will press the button (@IBAction). I have used below code

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let nextViewController = storyBoard.instantiateViewControllerWithIdentifier("About") as! AboutViewController
self.presentViewController(nextViewController, animated: true, completion: nil)

I am getting the error "Value of type 'SlideMenuView' has no member 'presentViewController'.

because my class is a UIView type :

class SlideMenuView: UIView { 
}

so how can I navigate to other view controller.


Solution

  • I did it in a different way. In class file

    class SlideMenuView: UIView { 
    
     var navigationController: UINavigationController? // Declare a navigation controller variable
    
    // And create a method which take a navigation controller 
    
    
      func prepareScreen(navController: UINavigationController)-> UIView {
    
            navigationController = navController      
            let nibView = NSBundle.mainBundle().loadNibNamed("SlideMenuView", owner: self, options: nil)[0] as! UIView        
            self.addSubview(nibView)       
            return nibView
        }
    
    // In Button action 
    
     @IBAction func btnAction(sender: UIButton) {
    
             var storyBoard = UIStoryboard(name: "Main", bundle: nil)
            let nextViewController = storyBoard!.instantiateViewControllerWithIdentifier("NextViewController") as! UIViewController
            navigationController?.pushViewController(nextViewController, animated: true)
        }
    }
    
    // For calling from UIViewController
    
        slideBarMenuIstance.prepareScreen(self.navigationController!)