Swift Compiler Error : Command failed due to signal: Segment



我是Xcode和swift的新手,但我已经能够将错误源缩小到这行代码。我到处都找遍了,就是找不到解决的办法。我目前使用的是Xcode 8.1。

        button.addTarget( self, action: #selector(handleRegister), for:.touchUpInside)

这是我的一些代码

import UIKit
class LoginController: UIViewController {
let backGroundImageView: UIImageView = {
    let imageView = UIImageView()
    imageView.image = UIImage(named: "backgrd_image")
    return imageView
}()
let inputsContainerView: UIView = {
    let view = UIView()
    view.backgroundColor = UIColor.white
    view.translatesAutoresizingMaskIntoConstraints = false
    view.layer.cornerRadius = 5
    view.layer.masksToBounds = true
    return view
}()
    let loginRegisterButton: UIButton = {
    let button = UIButton(type: .system)
    button.backgroundColor = UIColor(r: 80, g: 101, b: 161)
    button.setTitle("Register", for: .normal)
    button.setTitleColor(UIColor.white, for: .normal)
    button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 16)
    button.translatesAutoresizingMaskIntoConstraints = false
    button.addTarget( self, action: #selector(handleRegister), for:.touchUpInside)
    return button
}()
// when register button is clicked, printout 123
func handleRegister() {
    print(123)
}

有谁知道是什么导致了这个分割错误:11。

IMHO原因是你在"按钮"中使用"self"。addTarget(self, action: #selector(handleRegister), for:. touchupinside)"。检查你是否可以插入"nil"而不是"self"在您尝试插入"nil"之后,您可以添加"print(self)"以了解"self"指的不是"LoginController"。

删除这一行:

 button.addTarget( self, action: #selector(handleRegister), for:.touchUpInside)

写入viewDidLoad函数

要使用self,必须像下面这样在第一行使用"lazy var"而不是"let"。在函数中,self指向函数"loginRegisterButton",使用"lazy var",self将指向控制器

lazy var loginRegisterButton: UIButton = {
  let button = UIButton(type: .system)
  button.backgroundColor = UIColor(r: 80, g: 101, b: 161)
  button.setTitle("Register", for: .normal)
  button.setTitleColor(UIColor.white, for: .normal)
  button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 16)
  button.translatesAutoresizingMaskIntoConstraints = false
  button.addTarget( self, action: #selector(handleRegister), for:.touchUpInside)
return button
}()

相关内容

最新更新