误删登录验证Segue后如何修复?无需重启的方案咨询
不用重启应用的修复方案
别担心,这个问题很常见,咱们不用动项目结构,只需要调整Segue的触发方式,把验证逻辑加回去就行:
- 首先,先把Storyboard里登录按钮和Segue的直接绑定给取消掉。右键点登录按钮,找到里面那个直接触发Segue的选项(比如显示“show 目标控制器”的那一项),删掉它——这就是现在点按钮直接跳转的原因。
- 然后给登录按钮加个点击事件的IBAction(要是之前有就不用重新加了),在这个方法里写你的验证逻辑,只有验证通过才手动触发Segue:
@IBAction func loginBtnTapped(_ sender: UIButton) { // 先拿文本框里的账号密码(顺便去掉首尾空格) let inputUsername = usernameTxtField.text?.trimmingCharacters(in: .whitespacesAndNewlines) ?? "" let inputPassword = passwordTxtField.text?.trimmingCharacters(in: .whitespacesAndNewlines) ?? "" // 这里换成你自己的验证逻辑,比如和后台接口校验或者本地预设值比对 if inputUsername == "validUser" && inputPassword == "correctPass" { // 验证过了,手动触发你新建的那个Segue performSegue(withIdentifier: "你的Segue同名标识符", sender: self) } else { // 验证失败,给用户弹个提示 let alert = UIAlertController(title: "登录失败", message: "账号或密码不正确", preferredStyle: .alert) alert.addAction(UIAlertAction(title: "好的", style: .default)) present(alert, animated: true) } } - 最后确认下Storyboard里那个新Segue的标识符,和你代码里
performSegue里写的完全一致——选中Segue,在右侧Attributes Inspector里看Identifier字段就行。
改完之后重新编译运行一次,点击登录按钮就会先走验证逻辑,没问题才跳转了,完全不用重启整个应用或者重构项目。要是你之前有在prepare(for:sender:)里传数据的逻辑,也不受影响,手动触发Segue同样会调用这个方法。
内容的提问来源于stack exchange,提问作者Zach Wilcox
相关产品推荐
相关产品推荐

