我有包含ContainerView的MainViewController。 和ContainerView嵌入了表示ThirdViewController的segue
在ThirdViewController中,我创建PublishSubject,如果在PickerView中选择某些内容,则将值发送到PublishSubject中。 enter image description here
然后MainViewController从ThirdViewController订阅PublishSubject。
因此,如果成功完成,在MainViewController中,我将从PickerView中获得价值。
但是我的问题是我什么也收不到,甚至可能无法订阅。
出什么问题了???我该怎么办?
MainViewController
if let thirdVC = self.storyboard?.instantiateViewController(withIdentifier:"ThirdViewController") as? ThirdViewController {
print("third segue success")
thirdVC.selectFeelingSubject.subscribe(onNext : {
print($0)
}).disposed(by: self.disposeBag)
ThirdViewController
var selectFeelingSubject = PublishSubject<String>()
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
selectFeelingSubject.onNext(feelingArray[row])
}
答案 0 :(得分:0)
代码:
if let thirdVC = self.storyboard?.instantiateViewController(withIdentifier:"ThirdViewController") as? ThirdViewController {
print("third segue success")
thirdVC.selectFeelingSubject.subscribe(onNext : {
print($0)
})
.disposed(by: self.disposeBag)
没有提供主视图控制器中的视图控制器。它正在实例化一个全新的视图控制器。
您需要主视图控制器中的实际对象。尝试以下方法:
let thirdVC = self.children[0] as! ThirdViewController
thirdVC.selectFeelingSubject.subscribe(onNext : {
print($0)
})
.disposed(by: self.disposeBag)
如果您有多个子视图控制器,则需要将0
更改为适当的数字,以便获得正确的子视图。