フローティングボタン
解決したいこと
フローティングボタンをフローティングアクションボタンの作り方を参考に作ってみたのですが、let ediButton = UIButton()
の行に以下のエラーが表示されました。
理由が書いてないので調べても原因がわかりませんでした。ご存知の方がいらっしゃいましたら教えていただけると助かります。
発生している問題・エラー
Thread 1: EXC_BAD_ACCESS (code=2, address=0x16f103f50)
該当するソースコード
class ViewController: UITableViewController {
let editButton = UIButton() //エラー箇所
var startingFrame : CGRect!
var endingFrame : CGRect!
//initialization
override func viewDidLoad() {
super.viewDidLoad()
tableView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
tableView.separatorStyle = UITableViewCell.SeparatorStyle.none
tableView.delaysContentTouches = false
tableView.backgroundColor = .clear
tableView.delegate = self
tableView.dataSource = self
setupSubviews()
configureSizes()
tableView.register(Cell.self, forCellReuseIdentifier: "cell")
editButton.addTarget(self, action: #selector(handleEditButton(_:)), for: .touchUpInside)
}
//略
func setupSubviews() {
editButton.setTitle("編集", for: .normal)
editButton.titleLabel?.font = UIFont.systemFont(ofSize: 17)
editButton.titleLabel?.adjustsFontSizeToFitWidth = true
editButton.backgroundColor = UIColor(hex: "FF77FF")
editButton.layer.cornerRadius = editButton.frame.size.height / 2
editButton.layer.masksToBounds = true
tableView.addSubview(editButton)
editButton.snp.makeConstraints {
$0.width.equalTo(tableView.frame.width * 0.6)
$0.height.equalTo(30)
$0.bottom.equalToSuperview().offset(-50)
$0.centerX.equalToSuperview()
}
}
override func scrollViewDidScroll(_ scrollView: UIScrollView) {
if (scrollView.contentOffset.y >= (scrollView.contentSize.height - scrollView.frame.size.height)) && self.editButton.isHidden {
self.editButton.isHidden = false
self.editButton.frame = startingFrame
UIView.animate(withDuration: 1.0) {
self.editButton.frame = self.endingFrame
}
}
}
func configureSizes() {
let screenWidth = UIScreen.main.bounds.width
let screenHeight = UIScreen.main.bounds.height
startingFrame = CGRect(x: 0, y: screenHeight + 100, width: screenWidth, height: 100)
endingFrame = CGRect(x: 0, y: screenHeight - 100, width: screenWidth, height: 100)
}