HomeiOS Developmentios - I despatched and obtained knowledge between viewControllers utilizing rxswift, however...

ios – I despatched and obtained knowledge between viewControllers utilizing rxswift, however the textual content of the button on the receiving aspect doesn’t change


It’s the partial of code
I can put up the complete code if you’d like, however it’s too lengthy…

closing class FirstVC: UIViewController {

    non-public lazy var scrollView: UIScrollView

    non-public lazy var scrollBackgroundView: UIView

    non-public lazy var writeView: UIView

    non-public lazy var categoryStackView: UIStackView

    non-public lazy var titleCategoryDateStackView: UIStackView

    **non-public lazy var categoryButton: UIButton** = {
        let button = UIButton()
        button.setTitle("항목", for: .regular)
        button.titleLabel?.font = .systemFont(ofSize: 16.0)
        button.setTitleColor(.appColor(.baseGray), for: .regular)
        button.contentHorizontalAlignment = .main
        button.isUserInteractionEnabled = true
        
        button.addTarget(self, motion: #selector(categoryButtonTapped), for: .touchUpInside)

        return button
    }()

    let viewModel = FisrtViewModel()
    func bind(_ viewModel: FirstVC) {
        viewModel.getCategory
            .asObservable()
            .subscribe(onNext: { [weak self] class in
                guard let self else { return }
                self.categoryButton.setTitle(class, for: .regular)
                self.categoryButton.isEnabled = true
                self.categoryButton.layoutIfNeeded()
                self.categoryButton.setNeedsLayout()
                print(self.categoryButton.titleLabel?.textual content)
                print(self.categoryButton.titleLabel)
            })
            .disposed(by: disposeBag)
    }
}


closing class FisrtVM {

    let disposeBag = DisposeBag()
    
    let getCategory: Sign<String>
    let giveCategory = PublishSubject<String>()
    
    init() {
        getCategory = giveCategory
            .map({ str in
                print("giveCategory", str)
                return str
            })
            .asSignal(onErrorJustReturn: "Error")
    }
}

closing class SecondVC: UIViewController {

    let disposeBag = DisposeBag()
    let viewModel = SecondVM()
    let firstVC = FirstVC()
    
    let class = ["categoryData", "c2", "c3", "c4", "c5"]

    func bind(_ viewModel: SecondVM) {
        firstVC.bind(viewModel.firstVM)
        
        categoryTableView.rx.itemSelected
            .asObservable()
            .map { [weak self] indexPath -> String in
                self?.dismiss(animated: true)
                print("itemSelected", self?.class[indexPath.row])
                return self?.class[indexPath.row] ?? ":("
            }
            .bind(to: viewModel.categorySelected)
            .disposed(by: disposeBag)   
    }
}

closing class SecondVM {
    let disposeBag = DisposeBag()
    let firstVM = FirstVM()
    
    let categorySelected = PublishSubject<String>()
    
    
    init() {
        categorySelected
            .map({ str in
                print("categorySelected",str)
                return str
            })
            .bind(to: writeViewModel.giveCategory)
            .disposed(by: disposeBag)
    }
}

itemSelected Non-compulsory(“categoryData”)

categorySelected categoryData

giveCategory categoryData

Non-compulsory(“categoryData”)

Non-compulsory(<UIButtonLabel: 0x7fd310e1c2d0; body = (0 -10; 0 20); textual content=”categoryData”; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x6000028b4230>>)

Confirmed that the info is coming into the button
However the view would not replace… why?…

I looked for numerous articles and tried each.
I modified the code dozens of occasions… however it did not work

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments