KYDrawerController와 UINavigationController의 화면 전환
배경
이번 앱 작성에 있어서 아래 홈 화면에만 사이드 메뉴를 둔다는 별로 보이지 않는 형태의 구현을 하게 되었다.
[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상에서 바삭바삭 메뉴를 만들 수 있을 것 같기 때문에, 이것을 사용하기로 했다.
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 /
기타
@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)
}
}
drawerController.setDrawerState(.opened, animated: true)
로 호출할 때, 미묘하게 「뉴」로 한다. (AutoLayout 자르면 문제 없어지므로, 제작으로 어떻게든 할 수 있을 것 같은 예감은 하지만, 우선도 낮추고 나중에 대응) Reference
이 문제에 관하여(KYDrawerController와 UINavigationController의 화면 전환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fkds/items/307b8ae1fb99290e32e3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)