티스토리 뷰
[Swift/IOS] 회원가입 페이지 만들기(6) - tag, 삼항연산자, Navigation Controller, Push(show), Text View
마들브라더 2022. 7. 20. 00:01거의 다 한 것 같다..
빨리 탭 바와 내비게이션으로 넘어가고 table view도 넣고싶다..
여러가지 버튼 Action으로 연결하고 tag 사용하기
약관 전체동의하기 버튼과 아래 각 버튼들의 action을 총 5개 만들어서 해결할 수 도 있지만,
하나의 액션으로 묶고 tag를 사용해서 구별할 수 있도록 해보려고 한다
일단 전체동의하기 버튼의 IBAction을 connect 한 다음에, 해당 메서드를 각 버튼들에 연결해준다
그 다음 각 버튼들의 Attributes Inspector에서 tag를 각각 0~4로 입력해주고 코드를 아래와 같이 작성한다
@IBAction func allAgreementButtonClicked(_ sender: UIButton) {
let agreementArray = [allAgreementButton, personalInfoButton, termAndConditionButton, minorCheckButton, marketingAgreementButton]
switch sender.tag {
case 0:
if agreementArray[0]!.isSelected {
for i in agreementArray {
i?.isSelected = false
}
} else {
for i in agreementArray {
i?.isSelected = true
}
}
case 1...4:
if agreementArray[sender.tag]!.isSelected {
agreementArray[sender.tag]!.isSelected = false
} else {
agreementArray[sender.tag]!.isSelected = true
}
default:
break
}
}
각 버튼들이 눌렸을 때의 tag를 사용해서 tag가 0일때, 1..4일때로 나누어 selected를 true, false로 바꿔주게 했다
이렇게 보니 switch를 안쓰고 if를 쓰는게 나아보일 것도 같은데..
if sender.tag == 0 {
if agreementArray[0]!.isSelected {
for i in agreementArray {
i?.isSelected = false
}
} else {
for i in agreementArray {
i?.isSelected = true
}
}
} else {
if agreementArray[sender.tag]!.isSelected {
agreementArray[sender.tag]!.isSelected = false
} else {
agreementArray[sender.tag]!.isSelected = true
}
}
별 차이가 없다
큰 else 이후를 삼항연산자로 바꿔봐야겠다는 생각이 갑자기 들었다
If else를 삼항연산자로 사용하기
if sender.tag == 0 {
if agreementArray[0]!.isSelected {
for i in agreementArray {
i?.isSelected = false
}
} else {
for i in agreementArray {
i?.isSelected = true
}
}
} else {
agreementArray[sender.tag]!.isSelected = agreementArray[sender.tag]!.isSelected ? false : true
}
큰 else 뒤의 if 문이 간단해서 삼항연산자로 바꾸었다
a = 조건 ? true일 때 a의 값 : false일 때 a의 값
내비게이터 컨트롤러 추가하기
세부 동의하기 옆 버튼에서 자세히 버튼을 누르면 새로운 창이 뜨고 약관을 보여주게 하고 싶다
그냥 view controller를 띄우고 show로 보여줘도 되지만 내비게이터를 추가해서 보여주려고 한다
일단 view controller를 클릭한 후에
Interface Builder 오른쪽 하단 Embed in 버튼을 클릭하고, Navigation Controller를 클릭한다
Navigation Controller를 Embed in 하고 나면 오른쪽에 controller가 하나 생기고 기존 view Controller 상단에는 Navigation 영역이 새로 나타난다
나는 Title에 Commerce Sign Up 이라고 적어주었다
그다음 Object Library를 열어서 또 view controller를 하나 오른쪽에 만들어주자
서비스 이용약관 자세히 버튼을 클릭했을 때 내용을 띄워 주려고 한다
view controller를 만들어주고 outlet이나 action을 connect 시켜주는 것처럼
control을 누른체 새로운 view controller에 드래그 앤 드랍한 후, show를 선택해주자
그다음 새로운 view controller의 Navigation 영역에서 title을 스토어 이용 약관 이라고 변경해주었고,
text view를 하나 임의로 추가해주었다
이렇게 대부분의 기능구현이 된 것 같다
처음 생각했던 기능들을 다시 떠올려보자
회원가입 페이지에 들어갈 기능
1. 아이디 최소 글자수 조건 확인(6글자이상, 영어, 숫자만 사용)
2. 비밀번호 필수 조건 확인(8글자이상, 영어필수, 숫자필수, 특수문자필수 충족)
3. 이메일 형식 확인
4. 형식에 맞지 않는 부분은 타이핑 하면서 실시간으로 textField 아래에서 알려주기
5. 휴대폰 번호 인증버튼을 누르면 인증번호 입력창이 아래 나오고, 타이머 보여주기
6. 전체 동의 체크 버튼을 누르면 필수+선택 체크박스가 다 체크되게
7. 약관의 자세히 버튼을 눌러서 페이지 팝업
8. 회원가입에서 각 조건들 충족여부 확인해서 alert 띄우기
타이머 보여주는 기능과 회원가입 가능한 조건을 판단하는 것은 일단 보류하고 다른 Page들을 만들어서 붙여보려고 한다
레이아웃은... 생략한다!!!!!!!!!!
왜냐면 생략하고 싶으니까...
아래는 완성된 scene의 모습이다
'programming > Swift' 카테고리의 다른 글
- Total
- Today
- Yesterday
- escaping closrue
- ASAuthorizationAppleIDCredential
- weak
- CoreData
- 디자인패턴
- identity Token
- SWIFT
- core data
- object
- 메모리 안정성
- autoclosure
- 캡쳐리스트
- unowned
- 클로저 축약
- context
- authorizationCode
- Core Data Stack
- 토큰저장
- 강한참조순환
- 클로저 강한 참조
- 클로저표현
- Delegate 패턴
- 강한 참조 순환
- ios
- 회원가입
- 자동클로저
- inout 파라미터 메모리 충돌
- 클로저
- Entity
- Persistent Container
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |