ํฐ์คํ ๋ฆฌ ๋ทฐ
[iOS] Page view controller๋ฅผ Container View๋ก ์ฌ์ฉํ๋ฉฐ ๋ฐ์ํ ๋ฌธ์ ํด๊ฒฐ ๊ณผ์
Horang๐ฏ 2024. 1. 14. 21:01ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ๊ฐ์ฅ ๋ง์ ์ฝ์ง์ ์๊ฐ์ ๊ฐ์
page view controller์ ๋ํ ๊ธฐ๋ก์ ๋จ๊ฒจ๋ณด๊ฒ ์ต๋๋ค.
(์ฌ์ค page view controller์ ์ง์ ์ ์ผ๋ก ๊ด๋ จ๋ ๋ด์ฉ์ ์๋๊ณ ..
์ ๊ฐ ์ํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ฉด์ ๋ง๋ ๋ฌธ์ ๋ค ์์ฃผ๋ก ์์ฑํ์ต๋๋ค ๐)
ํด๋น ๋ทฐ ๋ก์ง์..
๋ชจ๋ ๊ฒ์ด ์ฒ์์ด์๋ ์ ์๊ฒ ๋ง์ ๋ฌธ์ ๋ฅผ ์๊ฒจ์ฃผ์๊ณ , ๋ง์ ์๊ฐ ๊ณ ๋ฏผ์ ํ๊ฒ ๋ง๋ค์์ต๋๋ค.
(์์๊ฐ ์ ํด์ ธ ์์ผ๋ฉฐ, ๋ฒํผ ์ ํ์ ๋ฐ๋ผ ๋ค์ ๋ทฐ๋ค์ ๊ตฌ์ฑ์ด ๋ฐ๋๋ ๋ก์ง...)
์ ์ ๊ฐ์ ์ํฉ์ ๊ฒช๋ ์ฌ๋๋ค์๊ฒ ์กฐ๊ธ์ด๋๋ง ๋์์ ์ฃผ๊ธฐ ์ํด ๊ธฐ๋ก์ผ๋ก ๋จ๊ฒจ๋ณด๋ ค๊ณ ํฉ๋๋ค.
๋ฌผ๋ก , ์์ง ๊ณต๋ถ์ค์ธ ๊ณผ์ ์์ ํด๊ฒฐํ ๋ฌธ์ ๋ค์ด๊ธฐ ๋๋ฌธ์
์ ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์ ๋ต์ ์๋๊ฒ ์ง๋ง, ๊ทธ๋๋ ๋๋ฆ ๊ณ ๋ฏผ ๋ง์ด ํด๋ณด๊ณ ํด๊ฒฐํ ๋ฐฉ์์ ๋๋ค!
๋ฐฐ๊ฒฝ ์ค๋ช
- ๋ฐํ
์ํธ ๋ทฐ๋ฅผ ์ฌ์ฉํ์ฌ step 3๊น์ง ์์๋ฅผ ์งํค๋ฉฐ ๋ทฐ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ , ์ ํ๋ ๋ฒํผ์ด๋ ์์ฑ๋ ๋ฌธ์ฅ์ ํตํด
Chat gpt์๊ฒ ๋ต์ ์์ฒญํ๊ณ ๋ณด์ฌ์ฃผ๋ ์ฑ์ ๋๋ค. - ๋ฐํ
์ํธ ๊ด๋ จ VC(๋ถ๋ชจ VC)์ Container View๋ฅผ ์ถ๊ฐํ๊ณ , ํด๋น view์ page view controller(์์ VC)๋ฅผ ์ฐ๊ฒฐํ์ต๋๋ค.
= ๊ฐ step์ ๋ฐ๋ผ ์๋ก์ด view๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด page view controller๋ฅผ ์์ ๋ทฐ๋ก ๊ฐ๋ ๋ถ๋ชจ VC๋ฅผ ๋ง๋ค์์ต๋๋ค. - ๊ฐ๊ฐ์ ๋ฒํผ์ table view๋ก ๊ตฌํํฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ฉด ๊ฐ view์ table view๋ฅผ reloadํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฑ์ ๊ทธ๋ ค์ค๋๋ค.
- step 1์์ ์ ํ๋ ๋ฒํผ์ ๋ฐ๋ผ, step 2์์ ๋ณด์ฌ์ ธ์ผ ํ๋ view๊ฐ ๋ฐ๋๋๋ค.
(1,2 ๋ฒ์งธ ๋ฒํผ์ด ๋๋ฆฐ ์ฑ ๋ค์์ ๋๋ฅด๋ฉด, 1,2 ๋ฒ์งธ ๋ฒํผ๊ณผ ๊ด๋ จ์๋ step2 VC๋ง์ ๋ณด์ฌ์ผ ํฉ๋๋ค.) - step 2์์ '๋๋ง์ ๋ฌธ์ฅ ์ถ๊ฐํ๊ธฐ' ๋ฒํผ์ด ๋๋ฆฌ๋ฉด, ๋ค์ ๋ทฐ๋ก step 2-1 VC๊ฐ ์ถ๊ฐ๋์ด์ผ ํฉ๋๋ค.
- step 3๋ ๋ฌด์กฐ๊ฑด ๋ง์ง๋ง์ ๋ฐฐ์น๋์ด ์์ด์ผ ํฉ๋๋ค.
- ์คํ
1,2์์ ๋ณด์ด๋ ๋ฐ์ดํฐ๋ค์ ๋ชจ๋ ์๋ฒ์ ๊ฐ๋ณ์ ์ผ๋ก ๋คํธ์ํฌ ์์ฒญ์ ๋ณด๋ด์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์์ผ ํฉ๋๋ค.
- ์คํ 2๋ ์คํ 1์์ ์ ํ๋ ๋ฒํผ์ ์ธ๋ฑ์ค ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ก ํจ๊ป ๋ณด๋ด ํน์ step 2 ๋ฐ์ดํฐ๋ง์ ๋ฐ์์ต๋๋ค.
- ์ฆ, ๋ชจ๋ ํ์ด์ง๋ฅผ ๋ณผ ๊ฒฝ์ฐ์ API ์์ฒญ์ ๋ฐ๋ก 6๋ฒ ํด์ผ ํฉ๋๋ค.
๋ฌธ์ 1: ๋ฒํผ์ ํตํด Page view controller์ VC ์ ํ
- ๋ณดํต page view controller์์ ํ์ด์ง ์ ํ์ tab์ด๋ swipe ๋์์ ํตํด ์งํํฉ๋๋ค.
- ํด๋น ์ฑ์ UI ๊ฒฝ์ฐ, ๋ฒํผ์ ํตํด ํ์ด์ง ์ ํ์ด ์ด๋ค์ ธ์ผ ํฉ๋๋ค.
- page view controller์ ๋ชจ๋ ์์ ๋ทฐ์ ๋ฒํผ์ ์ถ๊ฐํ์ฌ, ํ์ด์ง ์ ํ์ ์งํํ๊ธฐ์๋ ์์ฑ๋๋ ๋ฒํผ์ ์๊ฐ ๋ง๊ณ , ํ์ด์ง ์ ํ์ ํ์ํ ๋ก์ง์ด ๋ง์ ์ง๊ธฐ ๋๋ฌธ์ ๋นํจ์จ์ ์ด์์ต๋๋ค.
ํด๊ฒฐ: prepare ๋ฉ์๋ ํ์ฉ
- continerVC์ pageVC๊ฐ segway๋ก ์ฐ๊ฒฐ๋์ด ์์ด, ์ด๋ฅผ ์ด์ฉํ๋ฉด continerVC์์ page view controller์ ๊ด๋ จ๋ ๋ชจ๋ VC๋ค์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- prepare๋ฉ์๋๋ฅผ ํตํด, continerVC์์ page view controller๋ฅผ ์ฐธ์กฐํ์ฌ ํ์ฉํฉ๋๋ค.
- pageVC์์ ์ธ๋ฑ์ค๋ฅผ ํตํด ํ์ด์ง๋ฅผ ์ ํํ๋ ๋ฉ์๋๋ฅผ ์์ฑํ๊ณ , containerVC์์ ๋ฒํผ์ด ๋๋ฆด ๋๋ง๋ค ํด๋น ๋ฉ์๋๋ฅผ ์คํ์ํต๋๋ค.
// container view controller์์ ๊ตฌํ
// ์ธ๊ทธ์จ์ด๋ฅผ ํตํด page view controller ์ ์ฅ
var pageViewController : PageViewController!
// ๋ค์ ๋ฒํผ
@IBAction func nextButtonTapped(_ sender: Any) {
// ๋ค์ ํ์ด์ง๋ก ์ด๋
pageViewController.setNextViewControllersFromIndex(index: currentIndex)
}
// ์ด์ ๋ฒํผ
@IBAction func beforeButtonTapped(_ sender: Any) {
// ์ด์ ํ์ด์ง๋ก ์ด๋
pageViewController.setBeforeViewControllersFromIndex(index: currentIndex)
}
//MARK: - ์ธ๊ทธ์จ์ด์ prepare ๋ฉ์๋๋ฅผ ํตํด ๋ฐ์ดํฐ ๊ตํ
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "PageViewController" {
print("Connected")
// ์ธ๊ทธ์จ์ด์ ๋์ฐฉ์ง์ธ pageVC๋ฅผ ํ์ฌ ๋ถ๋ชจ VC์ ์ ์ฅ
guard let vc = segue.destination as? PageViewController else { return }
pageViewController = vc
}
}
// page view controller์์ ๊ตฌํ
// index ํ๋ผ๋ฏธํฐ: ์ด์ ํ์ด์ง ์ธ๋ฑ์ค
func setNextViewControllersFromIndex(index : Int){
// ๊ฐ๋ฅํ ์ธ๋ฑ์ค ๋ฒ์ ์ค์
guard index >= 0 && index < pageVCArray.count - 1 else { return }
// ๋ค์ ์ธ๋ฑ์ค ๋ฒํธ๋ฅผ ๋ณด์ฌ์ค์ผ ํ๊ธฐ ๋๋ฌธ์ + 1 ์
๋๋ค.
self.setViewControllers([pageVCArray[index + 1]], direction: .forward, animated: true, completion: nil)
// pageVC์ ์ ์ฅ๋์ด ์๋ currentIdex๋ฅผ containerVC์ ์ ๋ฌ
completeHandler?(currentIndex)
}
func setBeforeViewControllersFromIndex(index : Int){
// ๊ฐ๋ฅํ ์ธ๋ฑ์ค ๋ฒ์ ์ค์
guard index > 0 && index < pageVCArray.count else { return }
// ์ด์ ์ธ๋ฑ์ค ๋ฒํธ๋ฅผ ๋ณด์ฌ์ค์ผ ํ๊ธฐ ๋๋ฌธ์ - 1 ์
๋๋ค.
self.setViewControllers([pageVCArray[index - 1]], direction: .reverse, animated: true, completion: nil)
// pageVC์ ์ ์ฅ๋์ด ์๋ currentIdex๋ฅผ containerVC์ ์ ๋ฌ
completeHandler?(currentIndex)
}
๋ฌธ์ 2: ๋์ ์ผ๋ก ๋ฐ๋๋ ํ์ด์ง ์์
- ์ฒ์์๋ step 1๊ณผ step 3๋ ๋ฌด์กฐ๊ฑด ์์ด์ผํ๊ธฐ ๋๋ฌธ์ ๋ ๊ฐ์ VC๋ง ์ด๊ธฐํํ์ฌ ํ์ด์ง ๋ฐฐ์ด์ ์ ์ฅํ์ต๋๋ค.
- step1์์ ํน์ ๋ฒํผ์ด ์ ํ๋ ๋๋ง๋ค, ํด๋น step 2 VC๋ฅผ ์ด๊ธฐํํ๊ณ ๋ฐฐ์ด์ ๋ง์ง๋ง ์ธ๋ฑ์ค๋ณด๋ค 1 ์์ ์์น์ ํด๋น VC๋ฅผ append ํด์ฃผ์์ต๋๋ค.
- step 2 VC๊ฐ ์ด๊ธฐํ ๋๋ฉด ๋ฐ๋ก ์๋ฒ ํต์ ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๊ณ , ํด๋น VC์ ์ ์ฅํด์คฌ์ต๋๋ค.
- ํด๋น ๋ฐฉ์์ ๋ฌธ์ ์ ์ ๋ฒํผ์ ๋ฐ๋ณตํด์ ๋๋ฅผ ๊ฒฝ์ฐ ๋๊ฐ์ VC๊ฐ ๋ฐ๋ณตํด์ ๋ง๋ค์ด์ง ์ ์๊ณ , ์๋ฒ ํต์ ๋ ๊ณ์ํด์ ์คํ๋ ์ ์์ด ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
ํด๊ฒฐ: ๋ชจ๋ VC๋ฅผ ์ด๊ธฐ์ ๋ชจ๋ ์์ฑ
- ์ํฉ์ ๋ฐ๋ผ VC๋ฅผ ๊ณ์ํด์ ์๋ก ๋ง๋ค๊ณ , ๋ฐ์ดํฐ๋ฅผ ํต์ ํ๊ธฐ์๋ ๋๋ฌด ๋นํจ์จ์ ์ด์์ต๋๋ค.
- ๋ฐ๋ผ์, ๋ฒํผ์ ๋ฐ๋ผ VC๋ฅผ ์ด๊ธฐํํ๋ ๊ฒ์ด ์๋ ํด๋น ๋ทฐ๊ฐ ์ฒ์ ๋ฑ์ฅํ ๋ ๋ชจ๋ ๊ด๋ จ ๋ทฐ๋ค์ ์ด๊ธฐํํ์ฌ ๋ฐฐ์ด์ ์ ์ฅํ๊ณ , ์๋ฒ ํต์ ์ ์ํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฒ์
๋๋ค. ๋ค์ ๋งํด, ์ด๊ธฐ์ ๋ชจ๋ ๊ด๋ จ VC๋ค์ ๋ฐ์ดํฐ์ ํจ๊ป ๋ฐฐ์ด์ ์ ์ฅํด์ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค.
- ๋ฌผ๋ก , ๋ฒํผ ์ ํ์ ๋ฐ๋ผ VC๋ฅผ ์ด๊ธฐํํ์ฌ ์ถ๊ฐํ๋ ๋ฐฉ์๋ ํ ๋ฒ ์์ฑ๋ VC๋ ๋ฐ์ดํฐ๋ค์ ๋ ์ถ๊ฐํ์ง ์๋ ๊ณผ์ ์ ์ถ๊ฐํ๋ค๋ฉดํด๋น ๋ฐฉ๋ฒ๋ ํ์ฉํ ์ ์๊ฒ ์ง๋ง, ํ ๋ฒ ์์ฑ๋ VC๋ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ถ๊ฐํด์ผ ํ ํ๋กํผํฐ๋ค์ด ๋ง์์ง ๊ฒ์ด๋ผ ์๊ฐํ์ต๋๋ค. ๋ฐ๋ผ์ ํ ๋ฒ์ ๋ชจ๋ ํ์ด์ง๋ฅผ ๋ฐฐ์ด์ ์ ์ฅํ๊ณ , ์ธ๋ฑ์ค๋ฅผ ํตํด ์ ๊ทผํ๋ ๋ฐฉ์์ด ์ข ๋ ํธํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
- ๋ชจ๋ VC๋ฅผ allPageVCArray์ ์ ์ฅํ๊ณ , step 1 VC์์ ์ ํ๋ ๋ฒํผ๋ค์ ์ธ๋ฑ์ค๋ฅผ ๋ฐฐ์ด์ ์ ์ฅํ๊ณ , ๋ธ๋ฆฌ๊ฒ์ดํธ ๋ฐฉ์์ผ๋ก page view controller์ ์ ๋ฌ ํด์ฃผ๋ฉด, ์ ํ๋ ์ธ๋ฑ์ค์ ๊ด๋ จ VC๋ค์ pageVCArray ๋ฐฐ์ด์ ์๋กญ๊ฒ ์ ์ฅํ์ฌ ํ์ด์ง ์์๋ฅผ ์ง์ ํด์ค๋๋ค.
// ๋ถ๋ชจ ๋ทฐ์ ์ฝ์
ํ pageViewController ๋ฆฌ์คํธ
var pageVCArray: [UIViewController] = []
// ์ด๊ธฐ์ ๋ชจ๋ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ค์ ์ ์ฅํ ๋ฐฐ์ด
var allPageVCArray: [UIViewController] = []
//MARK: - ํ์ด์ง ์ธ๋ฑ์ค ๋ฐฐ์ด์ ๋ฐ๋ผ ํ์ด์ง๋ฅผ ์กฐ์ ํ๋ ๋ฉ์๋
func updatePageVCArray() {
// ํ์ด์ง ๋ฐฐ์ด ์ ์ฒด ์ญ์
self.pageVCArray.removeAll()
// ์ฒซ ๋ฒ์งธ ํ์ด์ง ์ถ๊ฐ
self.pageVCArray.append(allPageVCArray[0])
for index in stepTwoVCIndexArray {
switch index {
case 1:
self.pageVCArray.append(allPageVCArray[1])
case 2:
self.pageVCArray.append(allPageVCArray[2])
case 3:
self.pageVCArray.append(allPageVCArray[3])
case 4:
self.pageVCArray.append(allPageVCArray[4])
case 5:
self.pageVCArray.append(allPageVCArray[5])
default:
break
}
}
// ๋ง์ง๋ง ํ์ด์ง ์ถ๊ฐ
self.pageVCArray.append(allPageVCArray[allPageVCArray.count - 1])
}
๋ฌธ์ 3: step 2-1๋ ์ด์งธ..๐
- (์์ฆ ํ๋ก์ ํธํ๋ฉด์ ๋๋ ๊ฑด๋ฐ.. ๋น์ฅ ์์ ์๋ ๋ฌธ์ ๋ง ํด๊ฒฐํ๋ ค๋ค๋ณด๋ ๋ค์ ๊ณผ์ ์ ์๊ฐ๋ ์ํ๊ณ ์งํํฉ๋๋ค.... )
- ์๋ฌดํผ! ์์ ๋ฐฉ์์ผ๋ก ์งํํ๋ step1~3๋ ์ํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ์ด ๊ฐ๋ฅํ์ต๋๋ค. ๊ทธ๋ฌ๋ step2์์ step2-1์ ์๊ตฌํ ๋๋ ์ด๋ป๊ฒ ํด์ผํ ์ง ๋ง๋งํ์ต๋๋ค.
- ์ฒ์์๋ ์์ ๋ฐฉ์๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก, step2-1๋ allPageVCArray์ ์ ์ฅํด์, ๋ณด์ฌ์ค ํ์๊ฐ ์์ผ๋ฉด ์ธ๋ฑ์ค์ +1์ด ์๋ +2๋ฅผ ํด์ ํ์ด์ง ์ ํ์ ์๋ํ์ต๋๋ค.
- ํ์ง๋ง ๋ ์ ์ฒด๋ฅผ ๋ณด์ง ์๊ณ ์์ ์๋ ๋ฌธ์ ๋ง ํด๊ฒฐํ๋ค ๋ณด๋..
๋ค์ ๋ฒํผ์ผ๋ก๋ ์ํ๋ ๋ฐฉ์์ด ๊ตฌํ์ด ๋์๋๋ฐ, ์ด์ ๋ฒํผ์์๋ ๊ฐ์ ๋ก์ง์ ์ถ๊ฐํ๋ ค๋ค ๋ณด๋ ๋ชจ๋ step2 VC์ step 2-1 ๋ฒํผ ์ ํ์ ์ ๋ฌด๋ฅผ ์ ์ฅํด์ ๋งค๋ฒ ํ์ธํด์ผ ํ๋ ์ํฉ์ด ๋ฐ์ํ์ต๋๋ค.
- ํ์ง๋ง ๋ ์ ์ฒด๋ฅผ ๋ณด์ง ์๊ณ ์์ ์๋ ๋ฌธ์ ๋ง ํด๊ฒฐํ๋ค ๋ณด๋..
ํด๊ฒฐ: Delegate Protocol
- ๊ฐ๊ฐ์ step2 VC์์ bool ๊ฐ์ผ๋ก ๋ฒํผ์ ์ ํ ์ ๋ฌด๋ฅผ ํ๋จํ๊ณ , table view์ delegate ๋ฉ์๋๋ฅผ ํ์ฉํ์ฌ ๋ง์ง๋ง ์ ์ ๋ฒํผ์ด ์ ํ๋ ๋๋ง๋ค bool ๊ฐ์ ์์ ํฉ๋๋ค.
- ๋ํ, ํด๋น delegate ๋ฉ์๋์์ bool ๊ฐ์ ๋ฐ๋ผ ํด๋นstep2-1 VC๋ฅผ pageVCArray์ ํ์ฌ ์ธ๋ฑ์ค ๋ค์ ์๋ฒ์ผ๋ก ์ถ๊ฐ ๋๋ ์ญ์ ํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
// stepTwoViewController
// pageVC๋ฅผ delegate๋ก ์ค์
var customVCDeldgate: BottomSheetStepTwoCustomDelegate?
// step2 ์ปค์คํ
๋ทฐ์ปจ์ ๋ณด์ฌ์ค์ง ํ๋จ์ ์ํ bool ํ๋กํผํฐ
// ์ด๊ธฐ์ '๋๋ง์ ๋ฌธ์ฅ ์ถ๊ฐ'๋ฒํผ์ด ๋๋ ค์์ง ์๊ธฐ ๋๋ฌธ์ false๋ก ์ด๊ธฐํ
var showStepTwoCustomVC = false
// ๋ง์ง๋ง ์
์ด ์ ํ๋ ๋ ์คํ๋๋ ๋ฉ์๋
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.row == guideDetailData.count - 1 {
showStepTwoCustomVC = true
customVCDeldgate?.showStepTwoCustomVC(bool: showStepTwoCustomVC)
} else {
return
}
}
// ๋ง์ง๋ง ์
์ด ์ ํ ํด์ ๋ ๋ ์คํ๋๋ ๋ฉ์๋
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
if indexPath.row == guideDetailData.count - 1 {
showStepTwoCustomVC = false
customVCDeldgate?.showStepTwoCustomVC(bool: showStepTwoCustomVC)
} else {
return
}
}
// pageViewController
extension PageViewController: BottomSheetStepTwoCustomDelegate {
// step2์ bool๊ฐ์ ํ์ธํ๊ณ , step2-1 VC๋ฅผ ์ถ๊ฐ/์ญ์ ํ๋ค.
func showStepTwoCustomVC(bool: Bool) {
if bool {
if let stepTwoCustomVC = makeStepTwoCustomVC() {
self.pageVCArray.insert(stepTwoCustomVC, at: currentIndex + 1)
}
} else {
self.pageVCArray.remove(at: currentIndex + 1)
}
}
}
๋ฌธ์ 4: ๋ฐ์ดํฐ ๋์ฐฉ ์๋ฃ ์์
- ์์ ๋ฐฉ์๋ค๋ก ํ์ด์ง ๊ตฌ์ฑ์ ๋ํ ๋ก์ง์ ๊ตฌํ์ด ์๋ฃ๋์์ต๋๋ค. ๊ทธ๋ฌ๋ ์๊ฐ์ง๋ ๋ชปํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์์ต๋๋ค.
- ๊ฐ๋ ํ
์คํธ๋ฅผ ํ๋ ๋์ค ํ์ด์ง์ ์์๊ฐ ์ ์๊ฐ๊ณผ ๋ค๋ฅด๊ฒ ๋ณด์ด๋ ๊ฒฝ์ฐ๊ฐ ์์์ต๋๋ค.
(์ฌ์ค ์ด๋๊น์ง๋ง ํด๋ ๋น๋๊ธฐ์ ๋ํด ํฌ๊ฒ ์๊ฐํ์ง ๋ชปํ์ต๋๋ค..๐ญ) - ์ ์์๊ฐ ๋ค๋ฅด๊ฒ ๋์ฌ์ง์ ๋ํด ์ฌ๋ฌ ๋ฉ์๋์ print๋ฅผ ์ฐ์ด๊ฐ๋ฉฐ ํ์ธํ ๊ฒฐ๊ณผ, allPageVCArray์ step2 VC๋ฅผ ์ถ๊ฐํ ๋ ์์๊ฐ ๋ณด์ฅ๋์ง ์๋ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.
- step2 VC๋ฅผ ์ด๊ธฐํํ๊ณ ๋ฐฐ์ด์ ์ถ๊ฐํ๋ ๊ณผ์ ์ด step 2 VC๋ฅผ ์ด๊ธฐํ ํ๊ณ , ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์์ ๋ฐ์์ค๋ ๋น๋๊ธฐ ๋ฉ์๋๋ฅผ ์คํํ ๋ค, ํด๋น ๋ฐ์ดํฐ๋ฅผ ํ ๋นํ๊ณ , VC์ appendํ๋ ๊ฒ์ด์์ต๋๋ค.
- ์์ ๊ณผ์ ์ step2 VC๋ค์ ์์์ ๋ง๊ฒ ์ฝ๋ ์คํ์ ์์ผฐ์ง๋ง, ์๋ฒ ํต์ ์ ์ํ ๋น๋๊ธฐ ๊ณผ์ ์ด ํฌํจ๋์ด ์์ด ์ข ๋ฃ ์์ ์๋ ์์๊ฐ ๋ณด์ฅ์ด ๋์ง ์์ ์ฑ ๋ฐฐ์ด์ VC๋ค์ด ์ถ๊ฐ๋๊ณ ์์์ต๋๋ค.
ํด๊ฒฐ: VC๋ค์ ์์๋ฅผ ๋ฏธ๋ฆฌ ์ ์ฅ
- ๋น๋๊ธฐ ํจ์๊ฐ ์คํ๋๊ธฐ ์ ์ ๋ฏธ๋ฆฌ ๋ฐฐ์ด์ VC๋ฅผ ์ถ๊ฐํ์ฌ ์์๋ฅผ ๋ณด์ฅํด์ฃผ๊ธฐ๋ก ํ์์ต๋๋ค. ํ์ด์ง ์ ํ ์ ์ธ๋ฑ์ค๋ฅผ ํตํด ์ ํ์ ํ๊ธฐ ๋๋ฌธ์ VC๋ง ํด๋น ์ธ๋ฑ์ค์ ์ ์ฅ๋๋ค๋ฉด ๋น๋๊ธฐ ํจ์์ ์ข ๋ฃ ์์ ์ ํฐ ๋ฌธ์ ๊ฐ ๋ ๊ฒ ์์์ต๋๋ค.
- (์ฌ์ค ์ด ๋ฐฉ์์ ์์ง ๋ง์กฑ์ค๋ฌ์ด ๋ฐฉ์์ ์๋์ง๋ง..์ผ๋จ์ ์์ ๋ฐฉํธ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ๋์ค์ ์ข ๋ ๊ณต๋ถ๋ฅผ ํ๊ณ ๋ง์์ ๋๋ ๋ฐฉ์์ ์ฐพ๊ฒ ๋๋ฉด ๊ณต์ ํ๊ฒ ์ต๋๋ค ๐ ์๋ง.. async/await๋ฅผ ํ์ฉํ๋ฉด ์ฝ๋๊ฐ ๋ง์์ ๋ค์ง๋..?)
// pageViewController์ ๊ตฌํ
// ํด๋น ํ์ด์ง๊ฐ 5๊ฐ๋๊น ์ฐ์ ์ ์๋์ฒ๋ผ ๋ฐ๋ณต๋ฌธ์ ์์ฑ. but, ๋์ค์ ํ์ด์ง๊ฐ ๋์ด๋ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํ๋ค๋ฉด ์์ ํ์
for index in 1...5 {
if let stepTwoVC = UIStoryboard(name: "DiaryGuide", bundle: nil).instantiateViewController(withIdentifier: "StepTwoViewController") as? StepTwoViewController {
// ๋น๋๊ธฐ ํจ์ ์ฒ๋ฆฌ ์ ์์ ๋ณด์ฅ์ ์ํด ๋ฐฐ์ด์ ์คํ
2 VC ๋ฏธ๋ฆฌ ์ ์ฅ
self.allPageVCArray.append(stepTwoVC)
// ๋น๋๊ธฐ ํจ์ ์คํ
fetchGPTDiaryDetailGuide(index: index, stepTwoVC: stepTwoVC)
}
}
๋ง๋ฌด๋ฆฌ
์์ง ํ๋ก์ ํธ๊ฐ ์์ฑ๋์ง ์์ ์ํ์ด์ง๋ง, ์ง๊ธ ์ ์ ์ํ๋ฅผ ๋จ๊ฒจ๋ณด๊ณ ์ถ์ด ์ด์ฌํ ์ ์ด๋ณด์์ต๋๋ค.
ํ์ฌ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ์๋ค ์ค ๋ง์์ ๋ค์ง ์๋ ๋ถ๋ถ๋ค๋ ๋ง๊ธฐ ๋๋ฌธ์, ๊พธ์คํ ๊ณต๋ถ๋ฅผ ํ๋ฉด์ ๋ฆฌํฉํ ๋ง ๊ณผ์ ์ ์งํํด๋ณด๊ณ ์ถ์ต๋๋ค. (์ฑ ์ถ์๊ฐ ์ ์ผ ์ฐ์ ..)
๋ ํจ์จ์ ์ด๊ณ ๋์ ๋ฐฉ์์ด ์๋ค๋ฉด ์๋ ค์ฃผ์ธ์ !
์๋ชป๋ ๋ด์ฉ์ด ์๋ค๋ฉด ์ง์ ํด์ฃผ์๊ณ , ํผ๋๋ฐฑ์ ์ธ์ ๋ ํ์ํฉ๋๋ค. ๐ค
2024๋ ๊ฐ๋ฐ ๊ณต๋ถ์ ์์ด ๊ณต๋ถ ๊พธ์คํ๊ฒ ํด๋ณด์.
์์ ์์โ๏ธ ํ์ดํ โค๏ธ๐ฅ
'iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[HIG Study] agoda ์ฑ์ผ๋ก ๊ณต๋ถํ๋ HIG (0) | 2024.06.07 |
---|---|
[iOS] ํ๋ก์ ํธ์ TipKit ์ฌ์ฉํ๊ธฐ. (1) | 2024.05.10 |
Managing content in your appโs windows (0) | 2024.01.07 |
- ํ
- containerView
- Swift
- pageViewController
- ๊ฐ๋ฐ์
- ์์ด ๋ด์ค
- 10808
- ํ๊ณ
- ์ ํ์์นด๋ฐ๋ฏธ
- ๊ณต๊ฐ ๋ณต์ก๋
- ๊ท๋๋ผ๋ฏธ ์์ด
- BOJ
- Container View Controller
- ์์ด ๊ณต๋ถ
- ๊ดํธ์ ๊ฐ
- root view controller
- tipkit
- 2023๋ ํ๊ณ
- Anyobject
- ์๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- ๊ท๋๋ผ๋ฏธ ์์ด
- ๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- 2024๋ ๋ชฉํ
- C++
- ๋ฒ์ฉ๊ณ ์ ์๋ณ
- ์๋ฃ ๊ตฌ์กฐ
- ์ํํธ์คํฌ
- ์คํ
- 24๋ ํ๊ณ
- remainder
- Total
- Today
- Yesterday