私はそのようなケースを扱っており、ここで RxSwift を適用することを考えています。
.xib
ボタン付きのUIViewがあります。
class RightButtonItemView: UIView {
@IBOutlet weak var rightButtonimageView: UIImageView!
@IBOutlet weak var rightButtonButton: UIButton!
let performEventSegue = PublishSubject<Bool>()
class func instanceFromNib() -> RightButtonItemView {
return UINib(nibName: "NotificationView", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! RightButtonItemView
}
override func awakeFromNib() {
//I'm not sure how should I link button tap and my subject
rightButtonButton.rx.tap
}
}
viewController でこのビューのインスタンスを作成します
var rightButtonItemView = RightButtonItemView.instanceFromNib()
セグエからこのボタンをクリックすると、次の VC に移動する必要があるため、UIView のサブジェクトにサブスクライブします
rightButtonItemView.performEventSegue.asObserver().subscribe(onNext: { (isAuthorized) in
if isAuthorized {
let storyboard = UIStoryboard(name: "Notifications", bundle: nil)
let viewController = storyboard.instantiateViewController(withIdentifier: "UserNotificationsViewController")
self.present(viewController, animated: true, completion: nil)
}
})
しかし、ボタンのタップを公開サブジェクトの状態の変更にリンクするにはどうすればよいですか?