꾸준히 안타치기

SideBar / SWRevealViewController 라이브러리 사용 본문

iOS/기본편 | 실전편 -꼼꼼한재은씨

SideBar / SWRevealViewController 라이브러리 사용

글자줍기 2022. 2. 9. 15:29
반응형

프로젝트를 생성하고, 밑에 파일 2개를 추가한다.

팝업창뜨면

Create Bridging Header를 선택( 스위프트가 오브젝트- C파일을 참조할수 있도록 브릿징헤더 파일을 생성하는 옵션)

라이브러리 사용을 위해서는 3개의 뷰 컨트롤러가 필요하다.

Chapter04 -SideBar-Bridging-Header.h 파일을 열고 작성

//
//  Use this file to import your target's public headers that you would like to expose to Swift.
//

#import "SWRevealViewController.h"

 Resources폴더를 만들어 사이드바 아이콘을 추가한다.

FrontViewContrlloer.swift 파일을 만든다.

import UIKit

// 첫화면 구성
class FrontViewController : UIViewController {
       
    override func viewDidLoad() {
   
        }
    }
}

메인스토리보드로 가서 뷰컨트롤러와 SWRevealViewController 클래스를 연결한다.( 메인)

테이블뷰 컨트롤러를 추가한다.

메인컨트롤러와 테이블뷰 컨트롤러를 메뉴얼 세그웨이 방식으로 연결한다.

라이브러리에서 제공하는 커스텀세그웨이 타입이다.

뷰컨트롤러를 추가하고(프론트 컨트롤러) 네이게이션 컨트롤러를 앞에 붙인다.

FrontViewController와 아까만든 FrontViewContrlloer.swift 클래스와 연결한다.

FrontViewController의 네비게이션 바 좌측 여역에 바버튼 아이템을 추가하고,  추가한 이미지를 지정한다.

FrontViewController클래스로 바버튼을 드래그 하여 아울렛변수 sideBarButton을 정의한다.

// 첫화면 구성
class FrontViewController : UIViewController {
    
    @IBOutlet weak var sideBarButton: UIBarButtonItem!

메인 컨트롤러에서 네비게이션 컨트롤러로 세그웨이를 연결한다.

테이블뷰와 연결된 세그웨이의 Identifier속성에는 sw_rear를 프론트 컨트롤러에 연결된 세그웨이 Identifier속성에는  sw_front를 입렫한다. 식별자는 라이브러리에서 정해져 있는 규칙이다.

 

이제 사이드바 열림기능을 코드로 구현해보자. 코드는 단 3줄!

import UIKit

// 첫화면 구성
class FrontViewController : UIViewController {
    
    @IBOutlet weak var sideBarButton: UIBarButtonItem!
    
    override func viewDidLoad() {
    // 메인 컨트롤러의 참조 정보를 가져온다.
        if let revealVC = self.revealViewController(){
            // 버튼이 클릭될때 메인 컨트롤러에 정의된 revealToggle을 호출하도록 정의한다.
            self.sideBarButton.target = revealVC
            self.sideBarButton.action = #selector(revealVC.revealToggle(_:))
            // 제스처를 뷰에 추가한다.
            self.view.addGestureRecognizer(revealVC.panGestureRecognizer())
        }
    }
}

라이브러리에 이미 정의되어있는 뷰컨트롤러를 참조해 정보를 가져온다.

손으로 쓸어넘겨서 사이드바가 열리고 닫힐수 있도록 제스처 기능을 추가한다.

 

 

반응형
Comments