我是Xcode的新手,我正在使用登录按钮构建项目。在文本字段中单击具有详细信息的登录后,它将重定向到第二个视图,即滚动视图控制器。但是,我得到了“错误”
的两个部分通常,它适用于普通视图控制器(登录并移动到第二个视图)。我刚刚为滚动视图控制器重新创建了一个视图控制器,但它没有用。
顺便说一句,我获得了成功,但当我尝试“登录”
时我才遇到错误任何人都可以解释为什么我得到线程错误和致命错误? 我该如何解决这个问题?
登录视图控制器
@IBAction func LoginBtn(sender: AnyObject) {
LoginIn()
}
func LoginIn(){
let user = PFUser()
user.username = usernameTF.text!
user.password = passwordTF.text!
PFUser.logInWithUsernameInBackground(usernameTF.text!,
password:passwordTF.text! , block: { (User: PFUser?, Error
:NSError? ) -> Void in
if Error == nil{
dispatch_async(dispatch_get_main_queue()){
let Storyboard = UIStoryboard(name: "Main", bundle: nil)
let MainVC : UIViewController = Storyboard.instantiateViewControllerWithIdentifier("scrollV") as UIViewController
self.presentViewController(MainVC, animated: true, completion: nil)
}
}
else{
NSLog("Wrong!!!!")
}
})
}
滚动视图控制器
import UIKit
class ScrollViewController: UIViewController {
@IBOutlet weak var scrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
let V1 : ScrollViewController = ScrollViewController(nibName: "ScrollViewController", bundle: nil)
self.addChildViewController(V1)
self.scrollView!.addSubview(V1.view!)
V1.didMoveToParentViewController(self)
}
答案 0 :(得分:3)
你正在做一些强制解包,这是不推荐的(一般不推荐使用Swift中的强制内容),如果要解包的变量是nil
,它会使你的应用程序崩溃。这就是为什么只有当你100%确定你的可选值中有一个有效值时才推荐强制解包。
在您的情况下,似乎V1.view!
导致崩溃,这可能是由于V1
没有从笔尖成功加载的事实引起的。
Swift使得使用可空值很容易。只是不要强制打开并使用optional binding代替。
答案 1 :(得分:3)
@Cristik是对的。而不是强制解包变量,你应该检查它是否使用“if let”语句进行实例化:
if let scrollView = self.scrollView {
if let subView = V1.view {
scrollView.addSubview(subView)
}
}