###前提・実現したいこと
RxSwiftとMVVMを使ってiOSアプリの開発を行っております。只今、アプリのホーム的な画面を作成しております。イメージとしては、クックパッドの起動時に表示される画面のような、縦スクロールができ、行ごとに動的に要素が変更されるものを作ろうとしています。
この画面はおそらくですが、TableViewを使い、Cellごとに異なるCustomCellで描画しているのではないかと考えています。ただ、そこから先の実装方法がわかりません。
###わからないこと
下記コードのように、ViewModelのitemsをTableViewにbindして、TableViewを描画すると思っています。
lang
1// ViewController 2 3viewModel.items.bind(to: tableView.rx.items) { tableView, cell, element in 4 // ここでelementに応じてCustomCellをつくってreturnする? 5}
この際、itemsの型は構造体の配列になるかと思うのですが、各Cell毎に全く異なる要素を表示するため、同一の構造体にすることができません。無理やる方法としては、下記の様な構造体を用意し、itemsを[Item]として、上記コードのクロージャ内でtypeで分岐して、bodyをキャストして扱う方法はありそうな気がしています。
lang
1struct Item { 2 let type: ItemType 3 let body: Any 4}
しかし、このAnyにダウンキャストしている時点で、Swift的にはあまり良いコードではないと考えております。どのように実装すればよいのでしょうか?ご教示いただければ幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/04 10:57