swift初心者です。
noStoryboadでUIButtonを配置し、Buttonの詳細設定を別のクラス?で設定すると、buttonを押してもbuttonが機能しません。
同クラスで設定した場合は正しく機能します。
何か原因がわかる方がいましたら、ご教授ください。
swift
1// HomeViewController.swift 2 3import UIKit 4import RxSwift 5import RxCocoa 6 7class HomeViewController: UIViewController { 8 9 private let disposeBag = DisposeBag() 10 11//class Buttons は下記に表示してあります。 12 private let test01Button = Buttons(buttonTitle: "テスト1", buttonColor: .red) 13 14 15 let test02Button: UIButton = { 16 let button = UIButton(type: .system) 17 button.setTitle("テスト2", for: .normal) 18 button.backgroundColor = .purple 19 button.setTitleColor(.white, for: .normal) 20 button.layer.cornerRadius = 10 21 return button 22 }() 23 24 override func viewDidLoad() { 25 super.viewDidLoad() 26 27 28 setupLayout() 29 setupBidnings() 30 view.backgroundColor = .yellow 31 } 32 33 private func setupLayout() { 34 let baseStackView = UIStackView(arrangedSubviews: [test01Button, test02Button]) 35 baseStackView.axis = .vertical 36 baseStackView.distribution = .fillEqually 37 baseStackView.spacing = 43 38 baseStackView.translatesAutoresizingMaskIntoConstraints = false 39 40 view.addSubview(baseStackView) 41 42// extensionでanchor()制作済み 43 baseStackView.anchor(left: view.leftAnchor, right: view.rightAnchor, centerY: view.centerYAnchor, leftPadding: 40, rightPadding: -40) 44 } 45 46 private func setupBidnings() { 47 48//テスト01は機能しない 49 test01Button.rx.tap 50 .subscribe { _ in 51 print("テスト1が押されました") 52 } 53 .disposed(by: disposeBag) 54 55//テスト02は機能する 56 test02Button.rx.tap 57 .subscribe { _ in 58 print("テスト2が押されました") 59 } 60 .disposed(by: disposeBag) 61 } 62} 63
swift
1//Buttons.swift 2 3import UIKit 4 5class Buttons: UIButton { 6 7 init(buttonTitle: String, buttonColor: UIColor) { 8 super.init(frame: .zero) 9 10 setTitle(buttonTitle, for: .normal) 11 backgroundColor = buttonColor 12 setTitleColor(.white, for: .normal) 13 layer.cornerRadius = 10 14 } 15 16 required init?(coder: NSCoder) { 17 fatalError("init(coder:) has not been implemented") 18 } 19}
質問の仕方に不備があったら、すみません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/03 08:25