日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RxSwift之UI控件UIPickerView扩展的使用

發(fā)布時(shí)間:2024/5/21 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RxSwift之UI控件UIPickerView扩展的使用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、基本用法

① 單列的情況

基本用法

  • 示例代碼:
var pickerView : UIPickerView!// 最簡單的pickerView適配器(顯示普通文本) private let stringPickerAdapter = RxPickerViewStringAdapter<[String]>(components: [],numberOfComponents: { _,_,_ in 1 },numberOfRowsInComponent: { (_, _, items, _) -> Int inreturn items.count},titleForRow: { (_, _, items, row, _) -> String? inreturn items[row]} )// 創(chuàng)建pickerView pickerView = UIPickerView() pickerView.frame = CGRect.init(x: 0, y: 100, width: SCREEN_WIDTH, height: 150) self.view.addSubview(pickerView)// 綁定pickerView數(shù)據(jù) Observable.just(["One", "Two", "Tree"]).bind(to: pickerView.rx.items(adapter: stringPickerAdapter)).disposed(by: disposeBag)// 建立一個(gè)按鈕,觸摸按鈕時(shí)獲得選擇框被選擇的索引 let button = UIButton(frame:CGRect(x:0, y:0, width:SCREEN_WIDTH, height:50)) button.center = self.view.center button.backgroundColor = UIColor.purple button.setTitle("獲取信息",for:.normal) // 按鈕點(diǎn)擊響應(yīng) button.rx.tap.bind { [weak self] inself?.getPickerViewValue()}.disposed(by: disposeBag) self.view.addSubview(button)// 觸摸按鈕時(shí),獲得被選中的索引 @objc func getPickerViewValue(){let message = String(pickerView.selectedRow(inComponent: 0))let alertController = UIAlertController(title: "被選中的索引為",message: message, preferredStyle: .alert)let okAction = UIAlertAction(title: "OK", style: .cancel, handler: nil)alertController.addAction(okAction)self.present(alertController, animated: true, completion: nil) }

② 多列的情況

  • 示例代碼:
// 創(chuàng)建pickerView pickerView = UIPickerView() pickerView.frame = CGRect.init(x: 0, y: 100, width: SCREEN_WIDTH, height: 150) self.view.addSubview(pickerView)// 綁定pickerView數(shù)據(jù) Observable.just([["One", "Two", "Tree"],["A", "B", "C", "D"]]).bind(to: pickerView.rx.items(adapter: stringPickerAdapter)).disposed(by: disposeBag)// 建立一個(gè)按鈕,觸摸按鈕時(shí)獲得選擇框被選擇的索引 let button = UIButton(frame:CGRect(x:0, y:0, width:SCREEN_WIDTH, height:50)) button.center = self.view.center button.backgroundColor = UIColor.blue button.setTitle("獲取信息",for:.normal) // 按鈕點(diǎn)擊響應(yīng) button.rx.tap.bind { [weak self] inself?.getPickerViewValue()}.disposed(by: disposeBag) self.view.addSubview(button)// 觸摸按鈕時(shí),獲得被選中的索引 @objc func getPickerViewValue(){let message = String(pickerView.selectedRow(inComponent: 0)) + "-"+ String(pickerView!.selectedRow(inComponent: 1))let alertController = UIAlertController(title: "被選中的索引為",message: message, preferredStyle: .alert)let okAction = UIAlertAction(title: "OK", style: .cancel, handler: nil)alertController.addAction(okAction)self.present(alertController, animated: true, completion: nil) }

二、修改默認(rèn)的樣式

  • 如下所示,將選項(xiàng)的文字修改成橙色,同時(shí)在文字下方加上雙下劃線:

  • 要實(shí)現(xiàn)這個(gè)效果,只需改用 RxPickerViewAttributedStringAdapter 這個(gè)可以設(shè)置文字屬性的適配器即可,示例如下:
var pickerView:UIPickerView!// 設(shè)置文字屬性的pickerView適配器 private let attrStringPickerAdapter = RxPickerViewAttributedStringAdapter<[String]>(components: [],numberOfComponents: { _,_,_ in 1 },numberOfRowsInComponent: { (_, _, items, _) -> Int inreturn items.count}){ (_, _, items, row, _) -> NSAttributedString? inreturn NSAttributedString(string: items[row],attributes: [NSAttributedString.Key.foregroundColor: UIColor.orange, // 橙色文字NSAttributedString.Key.underlineStyle:NSUnderlineStyle.double.rawValue, // 雙下劃線NSAttributedString.Key.textEffect:NSAttributedString.TextEffectStyle.letterpressStyle])}// 創(chuàng)建pickerView pickerView = UIPickerView() pickerView.frame = CGRect.init(x: 0, y: 100, width: SCREEN_WIDTH, height: 150) self.view.addSubview(pickerView)// 綁定pickerView數(shù)據(jù) Observable.just(["One", "Two", "Tree"]).bind(to: pickerView.rx.items(adapter: attrStringPickerAdapter)).disposed(by: disposeBag)

三、使用自定義視圖

  • 將選項(xiàng)視圖改成單純顯示顏色色塊的 view,其顏色由傳入的值決定:

  • 要實(shí)現(xiàn)這個(gè)效果,只需改用 RxPickerViewViewAdapter 這個(gè)可以返回自定義視圖的適配器即可。示例如下:
// 設(shè)置自定義視圖的pickerView適配器 private let viewPickerAdapter = RxPickerViewViewAdapter<[UIColor]>(components: [],numberOfComponents: { _,_,_ in 1 },numberOfRowsInComponent: { (_, _, items, _) -> Int inreturn items.count}){ (_, _, items, row, _, view) -> UIView inlet componentView = view ?? UIView()componentView.backgroundColor = items[row]return componentView}// 創(chuàng)建pickerView pickerView = UIPickerView() pickerView.frame = CGRect.init(x: 0, y: 100, width: SCREEN_WIDTH, height: 150) self.view.addSubview(pickerView)// 綁定pickerView數(shù)據(jù) Observable.just([UIColor.red, UIColor.orange, UIColor.yellow]).bind(to: pickerView.rx.items(adapter: viewPickerAdapter)).disposed(by: disposeBag)

總結(jié)

以上是生活随笔為你收集整理的RxSwift之UI控件UIPickerView扩展的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。