Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Background
- enum
- Optional Chaining
- ios
- Realm
- 직장인자기계발
- switch
- 기본문법
- 문자열 보간법
- RawValue
- swift
- TableView
- 패스트캠퍼스후기
- 30개프로젝트로배우는iOS앱개발withSwift초격자패키지Online
- userDefaults
- Git
- 프로퍼티 관찰자
- 옵셔널 체이닝
- 패스트캠퍼스
- Threading
- 열거형
- cancelAsyncWrite
- 인스펙터
- 패캠챌린지
- SeSAC
- 직장인인강
- beginAsyncWrite
- 독학
- xcode
- 함수
Archives
- Today
- Total
아삭아삭 iOS 개발
[TIL] 2022.07.21 (SeSAC iOS) 본문
오늘 공부한 내용들을 내가 잊지 않기 위해 기록합니다.
틀린 내용이 있을 수 있는 점 참고 부탁드립니다 :)
■ 오늘의 과제
[과제1] 코드를 사용해서 화면전환 구현해보기
- 메인화면에서 RightBarButton 선택 시, 검색화면(SearchViewController)으로 이동
- 스토리보드에 bar item 추가한 후, 액션 연결해서 아래 코드를 추가했다.
- 이동할 화면이 다른 스토리보드 파일에 존재할 경우, 별도 상수를 선언해서 해당 스토리보드를 가져와서 연결하지만
내 프로젝트의 경우 동일한 스토리보드내에 모든 화면이 함께 있어서 self.storyboard?로 처리했다 - iOS 13 이전에는 modalPresentationStyle의 기본값이 fullscreen이었는데, iOS13 이후부터는 기본값이 page sheet임
→ page sheet은 상단에 약간 공간이 있어서 현화면 아래에 다른 화면이 있음을 사용자가 알 수 있게됨
→ 그래서 .fullscreen으로 설정해서 화면 꽉차게 해줌
// 상단 검색버튼 클릭시 화면전환
@IBAction func searchButtonTapped(_ sender: UIBarButtonItem) {
let vc = self.storyboard?.instantiateViewController(withIdentifier: SearchViewController.identifier) as! SearchViewController
let nav = UINavigationController(rootViewController: vc)
nav.modalPresentationStyle = .fullScreen
self.present(nav, animated: true)
}
- 검색화면(SearchViewController)에서 LeftBarButtonItem 선택시 dismiss
- 위에서 rootview를 SearchViewController로 두고 네비게이션 컨트롤러를 설정해줬다.
→ 그래서 SearchViewController에서 navigationItem으로 닫기 버튼 추가함 - #selector 사용해서 버튼액션 연결 완료!
- 위에서 rootview를 SearchViewController로 두고 네비게이션 컨트롤러를 설정해줬다.
func configureNav() {
navigationItem.leftBarButtonItem = UIBarButtonItem(image: UIImage(systemName: "xmark"), style: .plain, target: self, action: #selector(closeButtonTapped))
}
@objc
func closeButtonTapped() {
self.dismiss(animated: true)
}
- 메인화면에서 컬렉션뷰 item 선택시 상세화면(DetailViewController)으로 이동
- didSelectItemAt를 매개변수로 한 collectionView함수안에 이동하는 코드를 적용했다.
- toast팝업 코드 따로, 화면이동(push) 코드 따로 두었더니 팝업이 보이기도 전에 화면이 이동해버렸다..
→ 그래서 toast completion 코드안에 화면이동 코드를 넣고
→ 팝업표기 duration은 0.5초로 줄여주었음
(이전에 넷플릭스 회원가입 화면에서 가입완료 팝업 '확인'클릭과 동시에 화면이동시 코드와 유사)
(출처 : https://github.com/scalessec/Toast-Swift)
// [참고] toast 라이브러리의 샘플코드
// toast presented with multiple options and with a completion closure
self.view.makeToast("This is a piece of toast", duration: 2.0, point: CGPoint(x: 110.0, y: 110.0), title: "Toast Title", image: UIImage(named: "toast.png")) { didTap in
if didTap {
print("completion from tap")
} else {
print("completion without tap")
}
}
// 위 샘플코드 참고하여 화면이동 코드 적용 완료
override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
// toast 팝업 끝까지 보여준 이후에 화면이동
view.makeToast("월간 베스트 \(indexPath.item + 1)위 도서를 선택했습니다.", duration: 0.5, position: .center) { _ in
let pushVC = self.storyboard?.instantiateViewController(withIdentifier: DetailViewController.identifier) as! DetailViewController
self.navigationController?.pushViewController(pushVC, animated: true)
}
}
- 상세화면(DetailViewController)에서 임의의 버튼 클릭 시, 웹 링크화면(MoreDetailViewController)이 등장
- 버튼 클릭시 실행되는 액션내에 push 화면전환 코드 추가했다
- 아래 코드를 보면 알 수 있듯이, 무조건 실행한다고 화면을 전환하는 것이 아니라!
navigationController? 가 있니?없니? 하고 확인해서 있으면 push해서 화면이 전환된다.
@IBAction func buttonTapped(_ sender: UIButton) {
let pushVC = self.storyboard?.instantiateViewController(withIdentifier: MoreDetailViewController.identifier) as! MoreDetailViewController
self.navigationController?.pushViewController(pushVC, animated: true)
}
마무리
코드리뷰 받은 내용이나, 헷갈리는 내용들 정리한다는게 점점 (섞여서)쌓이고 있다
부지런하게 정리해서 얼른 올려야지ㅠㅠ
iOS 공부하면 하루종일 앉아서 모니터만 보게 될 것 같아서 여름부터 새로운 운동시작했는데 하길 잘한 것 같다. (팔은 부들부들 떨리지만)
이제 새싹 프로그램 시작한지 3주 지났는데(와 벌써), 앞으로 남은 5개월도 빡세게 하려면
진짜 체력 필수..
이번주 주말은 평가과제로 불태울 생각에 기대된다 야호오오오오
'TIL(Today I Learned)' 카테고리의 다른 글
[TIL] 2022.07.28 (SeSAC iOS) (0) | 2022.07.28 |
---|---|
[TIL] 2022.07.22 (SeSAC iOS) (0) | 2022.07.22 |
[TIL] 2022.07.20 (SeSAC iOS) (0) | 2022.07.20 |
[TIL] 2022.07.19 (SeSAC iOS) (0) | 2022.07.19 |
[TIL] 2022.07.18 (SeSAC iOS) (0) | 2022.07.18 |