-
[뉴스어플 정리] 6. 테이블뷰 셀 터치하기iOS/뉴스어플(RxSwift) 2021. 5. 25. 13:05
func subscribeTapCell() { tableView.rx.itemSelected .bind() { [weak self] indexPath in self?.tableView.deselectRow(at: indexPath, animated: true) guard let cell = self?.tableView.cellForRow(at: indexPath) as? NewsTableViewCell else { return } guard let url = URL(string: cell.urlToNews ?? "") else { return } let safari = SFSafariViewController(url: url) self?.present(safari, animated: true, completion: nil) }.disposed(by: disposeBag) }RxCocoa로 UIKit을 사용할 수 있다. 위의 tableView.rx 같이 이용하면 된다.
tableView.rx에는 itemSelected라는게 있다.
요기에 실행될 클로저를 bind하면 테이블뷰의 셀이 터치될때마다 클로저의 내용이 실행된다.
bind에는 IndexPath를 변수를 가지는 클로저를 입력하게 되어있다.
위의 코드 내용은 IndexPath를 받아서 테이블뷰의 셀을 찾은 다음 셀이 가지고 있는 뉴스의 url을 이용해서
사파리를 띄워주는 것이다.
셀이 뉴스의 url을 가지고 있는 이유는 테이블뷰에 articleObservable을 bind할때 전달해줬기 때문이다.
아무튼 rx를 이용해서 셀이 터치될때의 동작도 구현할 수 있다.
이런거를 이용하면 테이블뷰의 delegate에 작성할게 거의 없을거고 더 깔끔해질것이다.
'iOS > 뉴스어플(RxSwift)' 카테고리의 다른 글
[뉴스어플 정리] 7. 다른뉴스로 교체하기 (0) 2021.05.25 [뉴스어플 정리] 5. 뷰모델을 테이블뷰에 붙이기 (0) 2021.05.24 [뉴스어플 정리] 4. 뉴스데이터를 뷰모델로 가공하기 (0) 2021.05.24 [뉴스어플 정리] 3. 뷰모델 만들기 (0) 2021.05.24 [뉴스어플 정리] 2. 뉴스데이터 가져오기 (0) 2021.05.24