Swift 在满足某些条件后,通过编程方式推送视图控制器

Swift 在满足某些条件后,通过编程方式推送视图控制器,swift,xcode,swift5,Swift,Xcode,Swift5,当用户输入正确的用户名和密码(并按下按钮)时,按下下一个视图控制器的代码会显示错误: “在作用域中找不到类型‘NextViewController’” 我如何解决这个问题?还是有更好的代码行可以实现 导入UIKit 类ViewController:UIViewController{ @ibvar usernameTF:UITextField! @IBOutlet弱var密码tf:UITextField! 让usernames=[“username1”、“username2”、“username

当用户输入正确的用户名和密码(并按下按钮)时,按下下一个视图控制器的代码会显示错误:

“在作用域中找不到类型‘NextViewController’”

我如何解决这个问题?还是有更好的代码行可以实现


导入UIKit
类ViewController:UIViewController{
@ibvar usernameTF:UITextField!
@IBOutlet弱var密码tf:UITextField!
让usernames=[“username1”、“username2”、“username3”]
让密码=[“password1”、“password2”、“password3”]
让故事板:UIStoryboard=UIStoryboard(名称:“Home”,bundle:nil)
让nextViewController=storyBoard。实例化EVEWCONTROLLER(标识符为:“nextView”)为!nextViewController
重写func viewDidLoad(){
super.viewDidLoad()
view.addSubview(按钮)
视图.添加子视图(按钮2)
usernameTF.delegate=self
passwordTF.delegate=self
}
私有let按钮:UIButton={
let button=UIButton()
button.frame=CGRect(x:20,y:480,宽:382,高:50)
setTitle(“继续”,用于:。正常)
button.backgroundColor=.systemPink
button.setTitleColor(.white,表示:。正常)
button.layer.cornerRadius=25
addTarget(self,action:#选择器(登录),for:.touchUpInside)
返回按钮
}()
私人出租按钮2:UIButton={
let button=UIButton()
button.frame=CGRect(x:20,y:730,宽:382,高:59.5)
setTitle(“注册!”,用于:。正常)
button.backgroundColor=.init(UIColor(红色:19/255,绿色:200/255,蓝色:242/255,alpha:1.0))
button.titleLabel?.font=UIFont(名称:“HelveticaNeue粗体”,大小:10)
button.titleLabel?.font=UIFont.boldSystemFont(字体大小:UIFont.buttonFontSize)
button.setTitleColor(.white,表示:。正常)
button.layer.cornerRadius=25
返回按钮
}()
@objc func登录(){
passwordTF.resignFirstResponder()辞职
如果(usernameTF.text!.count)<6 | |(passwordTF.text!.count)<6{
let alert=UIAlertController(标题:“抱歉”,消息:“请检查您是否具有正确的登录详细信息”,首选样式:。警报)
addAction(UIAlertAction(标题:“驳回”,样式:。取消,处理程序:nil))
当前(警报、动画:真)
}
否则,如果usernameTF.text==用户名[0]&&passwordTF.text==密码[0]{
let alert=UIAlertController(标题:“正确!”,消息:“我们在。”,首选样式:。警报)
addAction(UIAlertAction(标题:“驳回”,样式:。取消,处理程序:nil))
当前(警报、动画:真)
self.present(nextViewController,动画:true,完成:nil)
}
否则,如果usernameTF.text==用户名[1]&&passwordTF.text==密码[1]{
let alert=UIAlertController(标题:“正确!”,消息:“我们在。”,首选样式:。警报)
addAction(UIAlertAction(标题:“驳回”,样式:。取消,处理程序:nil))
当前(警报、动画:真)
}
否则,如果usernameTF.text==用户名[2]&&passwordTF.text==密码[2]{
let alert=UIAlertController(标题:“正确!”,消息:“我们在。”,首选样式:。警报)
addAction(UIAlertAction(标题:“驳回”,样式:。取消,处理程序:nil))
当前(警报、动画:真)
self.present(nextViewController,动画:true,完成:nil)
}
否则{
let alert=UIAlertController(标题:“不正确”,消息:“用户名或密码不正确!请重试。”,首选样式:。警报)
addAction(UIAlertAction(标题:“驳回”,样式:。取消,处理程序:nil))
当前(警报、动画:真)
self.present(nextViewController,动画:true,完成:nil)
}
}
}
扩展视图控制器:UITextFieldDelegate{
func textField应该返回(textField:UITextField)->Bool{
如果textField==usernameTF{
passwordTF.becomeFirstResponder()
}
如果textField==passwordTF,则为else{
登录()
}
返回真值
}
}
正如Matt所说,您的错误“在作用域中找不到类型'NextViewController'”告诉您编译器无法识别类型
NextViewController

唯一引用类型
NextViewController
的地方是这一行:

let nextViewController = storyBoard.instantiateViewController(withIdentifier: "nextView") as! NextViewController
您尝试将调用
情节提要返回的视图控制器。Instanceeviewcontroller(带标识符:)
强制转换为
下一个viewcontroller
的类型,但编译器不知道该类型是什么

我希望在您的项目中看到一个名为“NextViewController.swift”的文件,该文件如下所示:

import UIKit

class NextViewController: UIViewController {
    //The contents of your NextViewController class would go here
}

如果没有
NextViewController
类的定义,这就是问题的原因。如果您确实定义了一个
NextViewController
类,编译器由于某种原因无法找到它。如果是这种情况,请发布更多信息,我们可以尝试帮助您找出原因。

具体错误是什么?您说“下面的代码导致了一个“范围”错误,尽管我不知道如何解决此问题。”这太模糊了,没有帮助。完整的错误消息是什么?这是编译时错误还是运行时错误?“错误在哪一行?”邓肯道歉,我已经重新措辞了这个问题。这是一个编译时错误,我不知道如何解决它。错误在第18行。这是一个完全直接的错误。短语
as!NextViewController
意味着您相信有一个名为NextViewController的类。编译器说你错了。s
import UIKit

class NextViewController: UIViewController {
    //The contents of your NextViewController class would go here
}