[ios] Swift를 사용하여 한 뷰 컨트롤러에서 다른 뷰 컨트롤러로 이동하는 방법

한 뷰 컨트롤러에서 다른 뷰 컨트롤러로 이동하고 싶습니다. 다음 Objective-C 코드를 Swift로 어떻게 변환 할 수 있습니까?

UIViewController *viewController = [[self storyboard] instantiateViewControllerWithIdentifier:@"Identifier"];
UINavigationController *navi = [[UINavigationController alloc] initWithRootViewController:viewController];
[self.navigationController pushViewController:navi animated:YES];



답변

두 번째 뷰 컨트롤러에 대한 신속한 파일 (SecondViewController.swift)을 생성하고 적절한 함수 유형에 다음을 입력합니다.

let secondViewController = self.storyboard.instantiateViewControllerWithIdentifier("SecondViewController") as SecondViewController
self.navigationController.pushViewController(secondViewController, animated: true)


Swift 2 이상

let mapViewControllerObj = self.storyboard?.instantiateViewControllerWithIdentifier("MapViewControllerIdentifier") as? MapViewController
self.navigationController?.pushViewController(mapViewControllerObj!, animated: true)

스위프트 4

let vc = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "IKDetailVC") as? IKDetailVC
self.navigationController?.pushViewController(vc!, animated: true)


답변

내 경험상 navigationController아무것도 아니 었으므로 코드를 다음과 같이 변경했습니다.

let next = self.storyboard?.instantiateViewControllerWithIdentifier("DashboardController") as! DashboardController
self.presentViewController(next, animated: true, completion: nil)

의 ViewController를 설정하는 것을 잊지 마십시오 StoryBoard Id에서 StoryBoard->identity inspector


답변

뒤로 버튼이 표시되지 않도록하려면 (사용자가 로그인 한 후 표시하고 싶었 기 때문에 내 경우) 다음은 내비게이션 컨트롤러의 루트를 설정하는 방법입니다.

let vc = self.storyboard?.instantiateViewControllerWithIdentifier("YourViewController") as! YourViewController
        let navigationController = UINavigationController(rootViewController: vc)
        self.presentViewController(navigationController, animated: true, completion: nil)


답변

SWIFT 3.01

let secondViewController = self.storyboard?.instantiateViewController(withIdentifier: "Conversation_VC") as! Conversation_VC
self.navigationController?.pushViewController(secondViewController, animated: true)


답변

신속한 4.0

var viewController: UIViewController? = storyboard().instantiateViewController(withIdentifier: "Identifier")
var navi = UINavigationController(rootViewController: viewController!)
navigationController?.pushViewController(navi, animated: true)


답변

스위프트 3

let secondviewController:UIViewController =  self.storyboard?.instantiateViewController(withIdentifier: "StoryboardIdOfsecondviewController") as? SecondViewController

self.navigationController?.pushViewController(secondviewController, animated: true)


답변

Swift 4.1 및 Xcode 10에서

여기서 AddFileViewController 는 두 번째 뷰 컨트롤러입니다.

스토리 보드 ID는 AFVC입니다.

let next = self.storyboard?.instantiateViewController(withIdentifier: "AFVC") as! AddFileViewController
self.present(next, animated: true, completion: nil)

//OR

//If your VC is DashboardViewController
let dashboard = self.storyboard?.instantiateViewController(withIdentifier: "DBVC") as! DashboardViewController
self.navigationController?.pushViewController(dashboard, animated: true)

필요한 경우 스레드를 사용하십시오 .

전의:

DispatchQueue.main.async {
    let next = self.storyboard?.instantiateViewController(withIdentifier: "AFVC") as! AddFileViewController
    self.present(next, animated: true, completion: nil)
}

시간이 지나면 움직이고 싶다면 .

전의:

//To call or execute function after some time(After 5 sec)
DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) {
    let next = self.storyboard?.instantiateViewController(withIdentifier: "AFVC") as! AddFileViewController
    self.present(next, animated: true, completion: nil)
}