美文网首页iOS学习
RxSwift Variable监听传值

RxSwift Variable监听传值

作者: _锋 | 来源:发表于2017-08-23 08:46 被阅读0次

    lazy var sexViewModel:SexViewModel= {

    let sexViewModel =SexViewModel()

    return sexViewModel

    }()

    overridefuncviewDidLoad() {

    super.viewDidLoad()

    // Do any additional setup after loading the view.

    title="性别"

    view.addSubview(tableView)

    tableView.dataSource= (sexViewModelasUITableViewDataSource)

    tableView.delegate= (sexViewModelasUITableViewDelegate)

    //接收传值

    sexViewModel.rx_sex.asObservable().subscribe(onNext: {[weakself] (sexString)in

    printLog(message:"接收性别--\(sexString)")

    if(sexString.isEmpty){

    return

    }

    self?.navigationController?.popViewController(animated:true)

    }).addDisposableTo(disposeBag)

    }

    class SexViewModel:NSObject{

    lazy var titleArray :[String] = {

    let titleArray = ["男","女"]

    return titleArray

    }()

    //1.保存选中行

    varmarkSelectCellRow =0

    //2.监听传值

    varrx_sex :Variable =Variable("")

    varsexString :String{//改变sexString的值, rx_sex监听的值会发生改变

    get{//得到旧值

    return rx_sex.value

    }

    set{//将旧值换成新值

    printLog(message:"将旧值换成新值\(rx_sex.value)")

    return rx_sex.value= newValue

    }

    }

    overrideinit() {

    }

    }

    //MARK:UITableViewDelegate

    extensionSexViewModel:UITableViewDataSource,UITableViewDelegate{

    functableView(_tableView:UITableView, numberOfRowsInSection section:Int) ->Int{

    return2

    }

    functableView(_tableView:UITableView, cellForRowAt indexPath:IndexPath) ->UITableViewCell{

    letcell = tableView.dequeueReusableCell(withIdentifier:"sexViewTableViewCell", for: indexPath) as! SexViewTableViewCell

    cell.selectionStyle= .none

    cell.titleLabel.text=titleArray[indexPath.row]

    cell.rightImageView.isHidden= (indexPath.row==markSelectCellRow) ?false:true

    return cell

    }

    functableView(_tableView:UITableView, didSelectRowAt indexPath:IndexPath) {

    markSelectCellRow= indexPath.row

    tableView.reloadData()

    //改变sexString的值,传值

    sexString=titleArray[indexPath.row]

    }

    functableView(_tableView:UITableView, heightForRowAt indexPath:IndexPath) ->CGFloat{

    return50

    }

    }

    相关文章

      网友评论

        本文标题:RxSwift Variable监听传值

        本文链接:https://www.haomeiwen.com/subject/brzrdxtx.html