• Jan
  • Feb
  • Mar
  • Apr
  • May
  • Jun
  • Jul
  • Aug
  • Sep
  • Oct
  • Nov
  • Dec
  • Sun
  • Mon
  • Tue
  • Wed
  • Thu
  • Fri
  • Sat
  • 27
  • 28
  • 29
  • 30
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

데이터 개수에 따라 stack view 내 view 개수 변경하기

맥주 상세 향 개수 분기처리

만들 뷰

image

1~3개일 때

image

4개일 때

image

image

향 view가 1~3개일 땐 horizontal하게 배치되고, 받아오는 데이터에서 향이 4개일 때에는 하나만 밑으로 내려가기!

만들기

image

우선 4개(최대)를 다 만들어준다.
위쪽의 3개는 stack view로 감싸주고, 4번째 view는 그냥 uiview!

image

첫번째 scent view외에는 다 hidden처리 해 줬다. (향 최소 1개 존재)
나중에 데이터가 있으면 hidden만 풀어주면 되게끔!

그리고 아직 서버통신 전이니까 향 string 배열도 만들어준다. (나중에 서버에서 받아올 값)
image

4개의 뷰, 레이블을 각각 뷰 배열, 레이블 배열에 넣어준다.

UIView, UILabel 배열을 만들 땐
일반 자료형 배열 만들듯이 초기화 하는 게 아니라, append를 사용해서 element를 추가해야 한다.

var scentViews = [UIView]()
var scentLabels = [UILabel]()

이렇게 배열을 만들고, ( () 빼먹지 말기! )

scentViews.append(scentView1)
scentViews.append(scentView2)
scentViews.append(scentView3)
scentViews.append(scentView4)
        
scentLabels.append(scentLabel1)
scentLabels.append(scentLabel2)
scentLabels.append(scentLabel3)
scentLabels.append(scentLabel4)

요렇게 append 해주면 된다.

for idx in 0..<scents.count {
		scentViews[idx].isHidden = false
		scentLabels[idx].text = scents[idx]
            
		if idx == 4 {
				scentView4HeightConstraint.constant = scentView4Height
		}
}
        
if scents.count != 4 {
		scentView4.isHidden = true
		scentView4HeightConstraint.constant = 0
}

그리고 scents 배열의 개수에 따라서 isHidden false처리 해주고, label에 텍스트도 입력해준다.

stackview.viewWithTag( ) 쓰려다가 그냥 배열 만들어서 처리했다 !

끝!

image

향 2개일 때

image

향 4개일 때

image

향 1개일 때