NavigationViewController 신속한 ViewController 제공
"NavigationViewController-> MyViewController"시스템이 있고 프로그래밍 방식으로 MyViewController를 세 번째 뷰 컨트롤러 내에 표시하고 싶습니다. 문제는 MyViewController에 내비게이션 바가 없다는 것입니다. 도와주세요?
var VC1 = self.storyboard.instantiateViewControllerWithIdentifier("MyViewController") as ViewController
self.presentViewController(VC1, animated:true, completion: nil)
호출 은 기존 탐색 스택 외부에 모달로presentViewController
뷰 컨트롤러를 표시합니다 . UINavigationController 또는 기타에 포함되지 않습니다. 새 뷰 컨트롤러에 내비게이션 바를 포함하려면 두 가지 기본 옵션이 있습니다.
옵션 1. 새보기 컨트롤러를 모달로 표시하는 대신 기존 탐색 스택에 푸시합니다.
let VC1 = self.storyboard!.instantiateViewControllerWithIdentifier("MyViewController") as! ViewController
self.navigationController!.pushViewController(VC1, animated: true)
옵션 2. 새 뷰 컨트롤러를 새 탐색 컨트롤러에 포함하고 새 탐색 컨트롤러를 모달로 표시합니다.
let VC1 = self.storyboard!.instantiateViewControllerWithIdentifier("MyViewController") as! ViewController
let navController = UINavigationController(rootViewController: VC1) // Creating a navigation controller with VC1 at the root of the navigation stack.
self.present(navController, animated:true, completion: nil)
이 옵션은 "뒤로"버튼을 자동으로 포함하지 않습니다. 긴밀한 메커니즘을 직접 구축해야합니다.
당신에게 가장 적합한 것은 휴먼 인터페이스 디자인 질문이지만 일반적으로 무엇이 가장 합리적인지는 분명합니다.
SWIFT 3
let VC1 = self.storyboard!.instantiateViewController(withIdentifier: "MyViewController") as! MyViewController
let navController = UINavigationController(rootViewController: VC1)
self.present(navController, animated:true, completion: nil)
내 탐색 막대가 표시되지 않아 Swift 2 iOS 9에서 다음 방법을 사용했습니다.
let viewController = self.storyboard?.instantiateViewControllerWithIdentifier("Dashboard") as! Dashboard
// Creating a navigation controller with viewController at the root of the navigation stack.
let navController = UINavigationController(rootViewController: viewController)
self.presentViewController(navController, animated:true, completion: nil)
UIViewController에 대한 확장과 구조체를 사용하여 현재보기가 즐겨 찾기에서 표시되는지 확인했습니다.
1. 글로벌 Bool의 구조
struct PresentedFromFavourites {
static var comingFromFav = false}
2. UIVeiwController 확장 : "stefandouganhyde-옵션 2"에 의해 두 번째 옵션에서와 같이 모달로 표시되고 뒤 해결
extension UIViewController {
func returnToFavourites()
{
// you return to the storyboard wanted by changing the name
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let mainNavigationController = storyBoard.instantiateViewController(withIdentifier: "HomeNav") as! UINavigationController
// Set animated to false
let favViewController = storyBoard.instantiateViewController(withIdentifier: "Favourites")
self.present(mainNavigationController, animated: false, completion: {
mainNavigationController.pushViewController(favViewController, animated: false)
})
}
// call this function in viewDidLoad()
//
func addBackToFavouritesButton()
{
if PresentedFromFavourites.comingFromFav
{
//Create a button
// I found this good for most size classes
let buttonHeight = (self.navigationController?.navigationBar.frame.size.height)! - 15
let rect = CGRect(x: 2, y: 8, width: buttonHeight, height: buttonHeight)
let aButton = UIButton(frame: rect)
// Down a back arrow image from icon8 for free and add it to your image assets
aButton.setImage(#imageLiteral(resourceName: "backArrow"), for: .normal)
aButton.backgroundColor = UIColor.clear
aButton.addTarget(self, action:#selector(self.returnToFavourites), for: .touchUpInside)
self.navigationController?.navigationBar.addSubview(aButton)
PresentedFromFavourites.comingFromFav = false
}
}}
받아 들여지는 대답은 훌륭합니다. 이것은 대답이 아니라 문제의 예시 일뿐입니다.
다음과 같은 viewController를 제시합니다.
vc1 내부 :
func showVC2() {
if let navController = self.navigationController{
navController.present(vc2, animated: true)
}
}
vc2 내부 :
func returnFromVC2() {
if let navController = self.navigationController {
navController.popViewController(animated: true)
}else{
print("navigationController is nil") <-- I was reaching here!
}
}
As 'stefandouganhyde' has said: "it is not contained by your UINavigationController or any other"
new solution:
func returnFromVC2() {
dismiss(animated: true, completion: nil)
}
ReferenceURL : https://stackoverflow.com/questions/25444213/presenting-viewcontroller-with-navigationviewcontroller-swift
'development' 카테고리의 다른 글
SQLite 매개 변수 대체 문제 (0) | 2020.12.27 |
---|---|
사용자 지정 속성 (json.net)을 통해 직렬화에서 속성 제외 (0) | 2020.12.27 |
애플리케이션 컨텍스트와 함께 글라이드 이미지 로딩 (0) | 2020.12.27 |
Gson :지도를 직렬화하는 더 쉬운 방법이 있습니까? (0) | 2020.12.27 |
AVCaptureVideoPreviewLayer 방향-가로 방향 필요 (0) | 2020.12.27 |