简体   繁体   中英

Navigation Controller is not loading ( push , present ) another viewController

I cannot load the viewController on clicking the button, knowing that the defined Vc holds a value of the VC that i want to present.

//AppDelegate
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    
    let mainViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(identifier: "ViewController") as! ViewController
    let navVC = UINavigationController.init(rootViewController: mainViewController)
    self.window?.rootViewController = navVC
    self.window?.makeKeyAndVisible()
    return true
}

 //ViewController Class
 class ViewController: UIViewController, UIScrollViewDelegate {

@IBOutlet weak var collectionView: UICollectionView!
@IBOutlet weak var button: UIButton!
@IBOutlet weak var pageController: UIPageControl!

private let reuseIdentifier = /*"CollectionViewCell"*/ "Cell"
let collectionViewImages : [UIImage] = [#imageLiteral(resourceName: "cooov"), #imageLiteral(resourceName: "shutterstock535739452"), #imageLiteral(resourceName: "portraitYoungManLyingBedCheckingHisFeverThermometer232147948490")]
let collectionViewTexts : [String] = [
    "Stay at home ! your health is our Priority",
    "Access Latest Coronavirus articles !",
    "Check up on your health on a daily basis !"
]

override func viewDidLoad() {
    super.viewDidLoad()
    renderButton()
    renderCell()
    pageController.numberOfPages = collectionViewImages.count
    pageController.currentPage = 0
}

@IBAction func buttonClicked(_ sender: UIButton) {
    let signupVC = UIStoryboard.init(name:"SignUp", bundle: nil).instantiateViewController(withIdentifier: "SignUp")
    as! SignUp
self.navigationController?.pushViewController(signupVC, animated: true)
}
 }


//SignUp class The VC that should appear on ButtonClick 
class SignUp : BaseViewController {
override func viewDidLoad() {
    super.viewDidLoad()
 }
}
 
 //the class that is inherited by ViewController
 class BaseViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationController?.navigationBar.isHidden = true
 }
 }
[enter image description here][1]}

enter image description here

here is a link to the pics provided please check. https://drive.google.com/drive/folders/1CxysH911PIa3-S9Dx6EUV7DE8vlnEd4l?usp=sharing

You don't need new UINavigation controller to push.

@IBAction func buttonClicked(_ sender: UIButton) {
    let signupVC = UIStoryboard.init(name:"SignUp", bundle: nil).instantiateViewController(withIdentifier: "SignUp")
        as! SignUp
    self.navigationController?.pushViewController(signupVC, animated: true)
}

Also if you are working with iOS 13.0+ and using Xcode 11+, your SceneDelegate will be called instead of AppDelegate. So try copying the paste to SceneDelegate as well.

Here is the function you can change it like this and let me know the outcome

first run this one

@IBAction func buttonClicked(_ sender: UIButton) {
        let signupVC = UIStoryboard.init(name:"SignUp", bundle: nil).instantiateViewController(withIdentifier: "SignUp")

        let navVC = UINavigationController.init(rootViewController: signupVC)
      //  self.present(navVC, animated: true, completion: nil)

        if let nav =  self.navigationController {
            nav.pushViewController(navVC, animated: true)
        } else {
            print("navigation controller not found")
        }
    }

And then try to present... and let me know what happened

@IBAction func buttonClicked(_ sender: UIButton) {
        let signupVC = UIStoryboard.init(name:"SignUp", bundle: nil).instantiateViewController(withIdentifier: "SignUp")

        let navVC = UINavigationController.init(rootViewController: signupVC)
        self.present(navVC, animated: true, completion: nil)


    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM