2016-12-18 8 views
0

私のThirdViewControllerはXibファイルにあり、tableViewです。私はまた別のxibファイルに2つのセルを持っている、私は2つのカスタムセルをRxSwiftと交互に表示したい。これを行う方法。ここに私のコードは次のとおりです。登録方法RxSwiftと交互に2つのカスタムセルを表示

import UIKit 
import RxSwift 
import RxCocoa 

class ThirdViewController: UIViewController { 

    @IBOutlet weak var tableView: UITableView! 

    let items: Variable<[String]> = Variable(["Test 2", "Test 3", "Test 1", "Test 4", "Test 5"]) 

    let disposeBag = DisposeBag() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

     tableView.register(UINib(nibName: "LeftTableViewCell", bundle: nil), forCellReuseIdentifier: LeftTableViewCell.reuseIdentifier) 
     tableView.register(UINib(nibName: "RightTableViewCell", bundle: nil), forCellReuseIdentifier: RightTableViewCell.reuseIdentifier) 

     items.asObservable().bindTo(tableView.rx.items(cellIdentifier: LeftTableViewCell.reuseIdentifier, cellType: LeftTableViewCell.self)) { row, data, cell in 
      cell.data = data 
      }.addDisposableTo(disposeBag) 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 
+0

あなたは解決策を見つけますか? –

+0

@MostafaMohamedRaafat RxDataSourceを使用する別の方法があります。 – Khuong

+0

私はこのライブラリを避けようとしていました。どうやらこれが唯一の方法です! –

答えて

0
items.asObservable() 
    .bindTo(tableView.rx.items) { (tableView, row, element) in 
     let indexPath = IndexPath(row: row, section: 0) 

     if row % 2 == 0 { 
      // or some other logic to determine which cell type to create 

      let cell = tableView.dequeueReusableCell(withIdentifier: LeftTableViewCell.reuseIdentifier, for: indexPath) as! LeftTableViewCell 
      // Configure the cell 
      return cell 
     } 
     else { 
      let cell = tableView.dequeueReusableCell(withIdentifier: RightTableViewCell.reuseIdentifier, for: indexPath) as! RightTableViewCell 
      // Configure the cell 
      return cell 
     } 

    } 
    .disposed(by: disposeBag) 
+0

どうやって!アイテムのセル識別子を渡す必要があります –

関連する問題