KYDrawerController와 UINavigationController의 화면 전환

10002 단어 Swift4iOS9

배경



이번 앱 작성에 있어서 아래 홈 화면에만 사이드 메뉴를 둔다는 별로 보이지 않는 형태의 구현을 하게 되었다.
[Login]-[Home]
    ├[View1-1]-[View1-2]...
    ├[View2-1]-[View2-2]...
    └[View3-1]-[View3-2]...
※ 내 이미지라면 사이드 메뉴는 tabcontroller 대신 사용하는 이미지
※ 원래 iOS에 이 손 메뉴가 없다

사용하기로 결정한 라이브러리



storyboard상에서 바삭바삭 메뉴를 만들 수 있을 것 같기 때문에, 이것을 사용하기로 했다.
htps : // 기주 b. 코 m / y 쿄헤이 / KYD 라우 r 콘 t 롯 r /
오랜만에 iOS 주위를 하고 있는 것과, 샘플이 너무 나쁘고 도움이 되지 않았기 때문에 메모 대신에 했다는 것을 기재하기로 했다.

구현한 내용



대체로 Storyboard상에서의 설정은 라이브러리의 readme 및 샘플을 보면 다소 어떻게든 상관될 것이므로, 생략.
메뉴 화면에서 구현한 코드.

SideMenuViewController.swift
    @IBAction func view1ActionButton(_ sender: UIButton) {
        if let drawerController = navigationController?.parent as? KYDrawerController {
            let storyBoard = UIStoryboard(name: "Main", bundle: nil)
            let view1 = storyBoard.instantiateViewController(withIdentifier: "view1")
            (drawerController.mainViewController as? UINavigationController)?.pushViewController(view1, animated: true)

            drawerController.setDrawerState(.closed, animated: true)
        }
    }

    @IBAction func view2ActionButton(_ sender: UIButton) {
        if let drawerController = navigationController?.parent as? KYDrawerController {
            let storyBoard = UIStoryboard(name: "Main", bundle: nil)
            let view2 = storyBoard.instantiateViewController(withIdentifier: "view2")
            (drawerController.mainViewController as? UINavigationController)?.pushViewController(view2, animated: true)

            drawerController.setDrawerState(.closed, animated: true)
        }
    }

    @IBAction func view3ActionButton(_ sender: UIButton) {
        if let drawerController = navigationController?.parent as? KYDrawerController {
            let storyBoard = UIStoryboard(name: "Main", bundle: nil)
            let view3 = storyBoard.instantiateViewController(withIdentifier: "view3")
            (drawerController.mainViewController as? UINavigationController)?.pushViewController(view3, animated: true)

            drawerController.setDrawerState(.closed, animated: true)
        }
    }

    @IBAction func logoutActionButton(_ sender: Any) {
        self.dismiss(animated: true, completion: nil)
    }

    @IBAction func closeActionButton(_ sender: UIButton) {
        if let drawerController = navigationController?.parent as? KYDrawerController {
            drawerController.setDrawerState(.closed, animated: true)
        }
    }

mainViewController 측에서 navigation 시키는 것이 잘 되지 않고 오이타 소모했다.
다른 라이브러리에 관한 사이트이지만, 아래를 보고 「아ー」가 되었기 때문에 눈치챘다.
좋았어요
htps //w w. p 로지 ぇ ct - s 딱. 코 m / s ぃ로 메누콘 t 롯 r /

기타


  • 뭔가 storyboard 취득 더 짧게 걸었다고 생각했지만 잊었다
  • AutoLayout 사용하고 있으면 메뉴를 drawerController.setDrawerState(.opened, animated: true) 로 호출할 때, 미묘하게 「뉴」로 한다. (AutoLayout 자르면 문제 없어지므로, 제작으로 어떻게든 할 수 있을 것 같은 예감은 하지만, 우선도 낮추고 나중에 대응)
  • 역시 표준으로 준비되어 있는 것 이외로 하려고 하면 무엇이든 고생한다
  • 좋은 웹페이지 즐겨찾기