SWIFT:使用变量从单个函数导航到 UIViewControllers
SWIFT: Navigate to UIViewControllers from single function with a variable
我正在尝试为我的导航创建一个功能,而不必一遍又一遍地键入完全相同的行。
尝试这样做会导致错误:"Use of undeclared type 'viewController'"
我这样做是不是完全错误,我是否应该将这 4 行放在每个按钮上,只是使用不同的标识符和 viewController?
func navigateTo(identifier:String, viewController:UIViewController) {
let newVC = storyboard?.instantiateViewController(withIdentifier: identifier) as! viewController
newVC.modalPresentationStyle = .fullScreen
newVC.modalTransitionStyle = .flipHorizontal
self.present(newVC, animated: true, completion: nil)
}
@IBAction func btnOneTapped(_ sender: Any) {
navigateTo("myVC", MyViewController)
}
您正在传递 UIViewController
的一个实例,并试图在下一行中将 UIViewController 转换为它。修改您的函数以将 ViewController.Type
作为参数,如下所示:
func navigateTo<ViewController: UIViewController>(identifier: String, viewController: ViewController.Type) {
let newVC = storyboard?.instantiateViewController(withIdentifier: identifier) as! ViewController
newVC.modalPresentationStyle = .fullScreen
newVC.modalTransitionStyle = .flipHorizontal
self.present(newVC, animated: true, completion: nil)
}
@IBAction func btnOneTapped(_ sender: Any) {
navigateTo(identifier: "myVC", viewController: MyViewController.self)
}
确保您提供正确的标识符...下面的代码完美运行。
您的错误 -> 尝试这样做会导致错误:"Use of undeclared type 'viewController'"
这里有一个拼写错误 ViewController
即你正在尝试这个 - viewController
也总是尝试做 Optional-Binding
而不是 force-unwarpping
这可能会导致您的应用程序崩溃。
func navigateTo(identifier:String, viewController:UIViewController) {
if let newVC = storyboard?.instantiateViewController(withIdentifier: identifier) {
newVC.modalPresentationStyle = .fullScreen
newVC.modalTransitionStyle = .flipHorizontal
self.present(newVC, animated: true, completion: nil)
}
}
@IBAction func confirmBtn(_ sender: UIButton) {
navigateTo(identifier: "myVC", viewController: MyViewController())
}
谢谢大家,我已经搞定了:
func navigateToVC(identifier:String, viewController:ViewController.Type) {
let newVC = storyboard?.instantiateViewController(withIdentifier: identifier) as! ViewController
newVC.modalPresentationStyle = .fullScreen
newVC.modalTransitionStyle = .flipHorizontal
self.present(newVC, animated: true, completion: nil)
}
@IBAction func btnOneTapped(_ sender:Any) {
navigateToVC(identifier: "myVC", viewController: MyViewController.self)
}
我正在尝试为我的导航创建一个功能,而不必一遍又一遍地键入完全相同的行。
尝试这样做会导致错误:"Use of undeclared type 'viewController'"
我这样做是不是完全错误,我是否应该将这 4 行放在每个按钮上,只是使用不同的标识符和 viewController?
func navigateTo(identifier:String, viewController:UIViewController) {
let newVC = storyboard?.instantiateViewController(withIdentifier: identifier) as! viewController
newVC.modalPresentationStyle = .fullScreen
newVC.modalTransitionStyle = .flipHorizontal
self.present(newVC, animated: true, completion: nil)
}
@IBAction func btnOneTapped(_ sender: Any) {
navigateTo("myVC", MyViewController)
}
您正在传递 UIViewController
的一个实例,并试图在下一行中将 UIViewController 转换为它。修改您的函数以将 ViewController.Type
作为参数,如下所示:
func navigateTo<ViewController: UIViewController>(identifier: String, viewController: ViewController.Type) {
let newVC = storyboard?.instantiateViewController(withIdentifier: identifier) as! ViewController
newVC.modalPresentationStyle = .fullScreen
newVC.modalTransitionStyle = .flipHorizontal
self.present(newVC, animated: true, completion: nil)
}
@IBAction func btnOneTapped(_ sender: Any) {
navigateTo(identifier: "myVC", viewController: MyViewController.self)
}
确保您提供正确的标识符...下面的代码完美运行。
您的错误 -> 尝试这样做会导致错误:"Use of undeclared type 'viewController'"
这里有一个拼写错误 ViewController
即你正在尝试这个 - viewController
也总是尝试做 Optional-Binding
而不是 force-unwarpping
这可能会导致您的应用程序崩溃。
func navigateTo(identifier:String, viewController:UIViewController) {
if let newVC = storyboard?.instantiateViewController(withIdentifier: identifier) {
newVC.modalPresentationStyle = .fullScreen
newVC.modalTransitionStyle = .flipHorizontal
self.present(newVC, animated: true, completion: nil)
}
}
@IBAction func confirmBtn(_ sender: UIButton) {
navigateTo(identifier: "myVC", viewController: MyViewController())
}
谢谢大家,我已经搞定了:
func navigateToVC(identifier:String, viewController:ViewController.Type) {
let newVC = storyboard?.instantiateViewController(withIdentifier: identifier) as! ViewController
newVC.modalPresentationStyle = .fullScreen
newVC.modalTransitionStyle = .flipHorizontal
self.present(newVC, animated: true, completion: nil)
}
@IBAction func btnOneTapped(_ sender:Any) {
navigateToVC(identifier: "myVC", viewController: MyViewController.self)
}