티스토리 뷰
728x90
출처 : XCode 스토리보드 사용시에 Segue 이용방법 3가지 | 아이군의 블로그
Page View Controller
@IBAction func nextPageClicked(_ sender: UIButton) { let nextViewController = storyboard?.instantiateViewController(withIdentifier: "Page2") as! Page2ViewController self.present(nextViewController, animated : true) }
페이지 넘기기 효과
페이지 배열에 담기
// lazy - 멤버가 생성되는 시점에는 메모리 할당하지 않음 // 객체가 생성될때 초기화 함수 없이 정의만하고 객체내에서 호출시 메모리 할당 lazy var vcArray:[UIViewController] = [self.loadVC(storyboardId: "page1VC"), self.loadVC(storyboardId: "page2VC"), self.loadVC(storyboardId: "page3VC")] // 스토리보드 ID로 ViewController 얻어오기 func loadVC(storyboardId : String) -> UIViewController { return (storyboard?.instantiateViewController(withIdentifier:storyboardId))! } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. // laza 변수가 호출 되어 메모리 할당 // static 으로 하지 않으면 객체가 만들기전에 self 함수를 호출 할 수 없지만 // lazy 변수는 객체내에서 호출시 메모리 할당 - 미리 할당 하지 않음 print(vcArray.count) }
페이지 이동 - 다음 페이지 지정
class PageViewController: UIPageViewController, UIPageViewControllerDataSource { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. guard let page1VC = vcArray.first else { return } self.setViewControllers([page1VC], direction: .forward, animated: true, completion: nil) } public func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? { guard let curIndex = vcArray.index(of : viewController) else { return nil } let beforeIndex = curIndex - 1 if beforeIndex < 0 { return vcArray.last } else { return vcArray[beforeIndex] } } public func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? { guard let curIndex = vcArray.index(of : viewController) else { return nil } let beforeIndex = curIndex + 1 if beforeIndex >= vcArray.count { return vcArray.first } else { return vcArray[beforeIndex] } }
페이지 넘기기 효과 제거하고 페이지 이동바 표시
// Attributes inspector > Transition Style Scroll 경우 총페이지 표시 public func presentationCount(for pageViewController: UIPageViewController) -> Int { return vcArray.count } // Attributes inspector > Transition Style Scroll 경우 현재 페이지 표시 public func presentationIndex(for pageViewController: UIPageViewController) -> Int { return 0 }
페이지 이동바 숨기기
override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() for subView in view.subviews { // subView가 UIScrollView 이면, subView.frame을 전체 크기(UIScreen.main.bounds)로 한다 -> 페이지 넘기는 화면이 사라짐 if subView is UIScrollView { subView.frame = UIScreen.main.bounds } } }
Modal 페이지 띄우기
if let modalVC = storyboard?.instantiateViewController(withIdentifier: "modalVC") { modalVC.modalTransitionStyle = .flipHorizontal present(modalVC, animated: true, completion: { print("show modal complete") }) }
Modal 페이지 닫기
dismiss(animated: true, completion: nil)
페이지 스텍을 전부 비우고 최상위 페이지로 이동
navigationController?.popToRootViewController(animated: true)
Modal 페이지 띄우기
@IBAction func showPage4Clicked(_ sender: UIButton) { if let page4VC = storyboard?.instantiateViewController(withIdentifier: "page4VC") { navigationController?.pushViewController(page4VC, animated: true) } } @IBAction func showPage7Clicked(_ sender: UIButton) { let sb = UIStoryboard(name : "main3", bundle : nil) let page7VC = sb.instantiateViewController(withIdentifier: "page7VC") navigationController?.pushViewController(page7VC, animated: true) } @IBAction func showPage2Clicked(_ sender: UIButton) { navigationController?.popViewController(animated: true) } @IBAction func showPage3Clicked(_ sender: UIButton) { performSegue(withIdentifier: "showPage3Segue", sender: nil) }
댓글
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- Linux
- Xcode
- ffmpeg
- 일본여행
- sas2009
- SAS
- 지스타2007
- koba2010
- 동경
- ble
- JavaScript
- 레이싱모델 익스트림 포토 페스티벌
- Spring MVC
- KOBA
- 튜닝쇼 2008
- 서울오토살롱
- ubuntu
- Delphi
- oracle
- MySQL
- Delphi Tip
- Java
- NDK
- Spring
- 송주경
- flex
- 전예희
- android
- Mac
- BPI-M4
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함