Swift - RxSwift的使用詳解30(UITableView的使用1:基本用法)

一、UITableView 的基本用法

1,單個分區(qū)的表格

import UIKit
import RxSwift
import RxCocoa
 
class ViewController: UIViewController {
     
    var tableView:UITableView!
     
    let disposeBag = DisposeBag()
     
    override func viewDidLoad() {
        super.viewDidLoad()
         
        //創(chuàng)建表格視圖
        self.tableView = UITableView(frame: self.view.frame, style:.plain)
        //創(chuàng)建一個重用的單元格
        self.tableView!.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
        self.view.addSubview(self.tableView!)
         
        //初始化數(shù)據(jù)
        let items = Observable.just([
            "文本輸入框的用法",
            "開關(guān)按鈕的用法",
            "進度條的用法",
            "文本標簽的用法",
            ])
         
        //設(shè)置單元格數(shù)據(jù)(其實就是對 cellForRowAt 的封裝)
        items
            .bind(to: tableView.rx.items) { (tableView, row, element) in
                let cell = tableView.dequeueReusableCell(withIdentifier: "Cell")!
                cell.textLabel?.text = "\(row):\(element)"
                return cell
            }
            .disposed(by: disposeBag)
    }
}

2,單元格選中事件響應(yīng)

(1)當我們點擊某個單元格時將其索引位置,以及對應(yīng)的標題打印出來。

(2)如果業(yè)務(wù)代碼直接放在響應(yīng)方法內(nèi)部,可以這么寫:

//獲取選中項的索引
tableView.rx.itemSelected.subscribe(onNext: { indexPath in
    print("選中項的indexPath為:\(indexPath)")
}).disposed(by: disposeBag)
 
//獲取選中項的內(nèi)容
tableView.rx.modelSelected(String.self).subscribe(onNext: { item in
    print("選中項的標題為:\(item)")
}).disposed(by: disposeBag)

(3)或者也可以在響應(yīng)中調(diào)用外部的方法:

//獲取選中項的索引
tableView.rx.itemSelected.subscribe(onNext: { [weak self] indexPath in
    self?.showMessage("選中項的indexPath為:\(indexPath)")
}).disposed(by: disposeBag)
 
//獲取選中項的內(nèi)容
tableView.rx.modelSelected(String.self).subscribe(onNext: {[weak self] item in
    self?.showMessage("選中項的標題為:\(item)")
}).disposed(by: disposeBag)

3,單元格取消選中事件響應(yīng)

//獲取被取消選中項的索引
tableView.rx.itemDeselected.subscribe(onNext: { [weak self] indexPath in
    self?.showMessage("被取消選中項的indexPath為:\(indexPath)")
}).disposed(by: disposeBag)
 
//獲取被取消選中項的內(nèi)容
tableView.rx.modelDeselected(String.self).subscribe(onNext: {[weak self] item in
    self?.showMessage("被取消選中項的的標題為:\(item)")
}).disposed(by: disposeBag)

4,單元格刪除事件響應(yīng)

//獲取刪除項的索引
tableView.rx.itemDeleted.subscribe(onNext: { [weak self] indexPath in
    self?.showMessage("刪除項的indexPath為:\(indexPath)")
}).disposed(by: disposeBag)
 
//獲取刪除項的內(nèi)容
tableView.rx.modelDeleted(String.self).subscribe(onNext: {[weak self] item in
    self?.showMessage("刪除項的的標題為:\(item)")
}).disposed(by: disposeBag)

5,單元格移動事件響應(yīng)

//獲取移動項的索引
tableView.rx.itemMoved.subscribe(onNext: { [weak self]
    sourceIndexPath, destinationIndexPath in
    self?.showMessage("移動項原來的indexPath為:\(sourceIndexPath)")
    self?.showMessage("移動項現(xiàn)在的indexPath為:\(destinationIndexPath)")
}).disposed(by: disposeBag)

6,單元格插入事件響應(yīng)

//獲取插入項的索引
tableView.rx.itemInserted.subscribe(onNext: { [weak self] indexPath in
    self?.showMessage("插入項的indexPath為:\(indexPath)")
}).disposed(by: disposeBag)

7,單元格尾部附件(圖標)點擊事件響應(yīng)

//獲取點擊的尾部圖標的索引
tableView.rx.itemAccessoryButtonTapped.subscribe(onNext: { [weak self] indexPath in
    self?.showMessage("尾部項的indexPath為:\(indexPath)")
}).disposed(by: disposeBag)

8,單元格將要顯示出來的事件響應(yīng)

//獲取選中項的索引
tableView.rx.willDisplayCell.subscribe(onNext: { cell, indexPath in
    print("將要顯示單元格indexPath為:\(indexPath)")
    print("將要顯示單元格cell為:\(cell)\n")
     
}).disposed(by: disposeBag)

RxSwift使用詳解系列
原文出自:www.hangge.com轉(zhuǎn)載請保留原文鏈接

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容