2017-12-14 4 views
0

두 개의 레이블 (mainLabel 및 subLabel)과 uiimageview가있는 단일 프로토 타입 셀을 만들었습니다. uitableview에서 프로토 타입을 재사용하는 셀을 여러 개 가지고 싶습니다. 필요한 경우 subLabel이 숨겨지고 uiimageview가 다른 것으로 변경되거나 uiswitch로 변경됩니다. 두 레이블은 각 셀마다 다른 텍스트를가집니다. 그것을하기 위해 어떤 제안/힌트가 있습니까? mvvm 아키텍처에서 가능합니까?여러 개의 다른 셀에 대해 하나의 사용자 정의 셀을 사용할 수 있습니까?

나는 내가하는 일에 대해 설명합니다 :

내가 구조체 (모델)가 두 개의 속성 : 레이블과 하위 라벨. 다음에, getModel (_ indexPath : IndexPath) -> cellModel {...} 메소드로 행해지는 각 셀의 텍스트를 제공하는 viewModel에 의해 인스턴스화됩니다. 마지막으로 UIViewController에서 tableView (_ tableView : UITableView, cellForRowAt indexPath : IndexPath) {...} dequeueReusableCell을 사용하여 getModel()을 호출하고 각 셀을 설정합니다. getModel()에는 내가 어떤 셀인지 알기 위해 사용하는 huuuuge 스위치가 있습니다

그런 다음 uitableviewcell에서 하위 레이블을 숨기고 uiimageview를 변경하는 몇 가지 방법이 있습니다.

일종의 작품이지만 스크롤하는 동안 몇 가지 문제가 있습니다. 예를 들어, 때로는 uiimageview가 다른 셀에 그려 지거나 subLabel이 숨겨져있는 경우가 있습니다. 나는 그것이 세포를 재사용하고 있기 때문에 이것이 기인 한 것 같아, 나는 그것을 재설정하지 않을 것이다.

어쨌든, 어떤 제안이나 아이디어?

나는 과용이라고 알고 있습니다 ...

답변

0

어떤 패턴이 필요 없습니다. 예, 모든 셀에 대해 단일 셀 디자인을 사용할 수 있습니다. 셀당 원하는대로 빈 레이블 및 이미지보기를 숨기거나 비우기 만하면됩니다.

는 모두 라벨에 기본 값을 설정하는 모든 및 이미지 뷰의
0

먼저

lblTitle.isHidden = false 
     lblSubLabel.isHidden = false 
     imgViewIcon.image = nil 

가 그럼 그냥 특정의 라벨을 표시 (제목 라벨, 하위 라벨과 이미지 뷰를 고려) 당신이 설정하고 이미지를 일치시킬 조건 이미지 뷰

if needToHide == true { 
     lblSubLabel.isHidden = true 
} 
(서브 레이블을 숨기도록 조건을 고려)
관련 문제