Tylko dla zapisu przed uruchomieniem mojego pytania używam wersji beta Swift 2 i xcode 7.Jak mogę przejąć kontrolę nad canEditRowAtIndexPath, gdy używam rozszerzenia RxCocoa dla UITableView
Używam RxSwift i RxCocoa do wiązania mojego ViewModel z TableView. W moim UITableViewController viewDidLoad robie to wiązanie ...
someCollectionOfViewModels
.bindTo(self.tableView.rx_itemsWithCellIdentifier("SomeCell")) {
(_, viewModel, cell: SomeTableViewCell) in
cell.tripViewModel = viewModel
}
someCollectionOfViewModels jest tylko tablicą widok modeli zawinięte w zmiennej <>, więc zmienna < [SomeViewModel]>. cell.tripViewModel jest typu SomeViewModel.
Nic z tego nie jest naprawdę związane z problemem, wszystko działa świetnie i kiedy mój model widoku jest aktualizowany, moja tabela aktualizuje się. Problem polega na tym, że chcę, aby moje komórki tabeli nie były edytowalne, a zasób UITableViewDataSource, który RxCocoa wstawia dla powyższego wiązania, nie implementuje opcjonalnej metody canEditRowAtIndexPath w tym protokole i domyślnie jest ustawiony na true, umożliwiając edycję komórek. Wiem, że mogę zaimplementować mój własny RxTableViewDataSourceType i to jest dość proste, ale dużo kodu, aby uzyskać tę jedną małą rzecz do pracy. Jestem całkiem nowy zarówno dla RxSwift, jak i iOS, czy brakuje mi czegoś prostego? Czy jest jakiś sposób w powyższym zamknięciu, w którym mam dostęp do UITableCellView, aby ustawić niektóre właściwości w samej komórce, aby uniemożliwić jej edycję? Co powiesz na coś w rozszerzeniach RxCocoa, których mi brakuje. Jeśli będę musiał, odejdę i napiszę własny RxTableViewDataSource, ale pomyślałem, że najpierw zapytam.
Dzięki,
-Bill
Znalazłeś rozwiązanie? – Noxt