발행물
에 대한 새로운 내용 Swift
을 살펴보기 시작했으며 Xcode 6
데모 프로젝트 및 자습서를 시도했습니다. 이제 나는 붙어있다 :
viewController
특정 스토리 보드에서 인스턴스화 및 발표
오브젝티브 -C 솔루션
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"myStoryboardName" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"myVCID"];
[self presentViewController:vc animated:YES completion:nil];
스위프트에서 이것을 달성하는 방법?
답변
이 답변은 Swift 5.2 및 iOS 13.4 SDK 용으로 마지막으로 개정되었습니다.
그것은 모두 새로운 구문과 약간 수정 된 API의 문제입니다. UIKit의 기본 기능은 변경되지 않았습니다. 이것은 대다수의 iOS SDK 프레임 워크에 해당됩니다.
let storyboard = UIStoryboard(name: "myStoryboardName", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "myVCID")
self.present(vc, animated: true)
에 문제가있는 경우 EridB의 답변을init(coder:)
참조하십시오 .
답변
@akashivskyy의 답변 을 사용하여 인스턴스화 UIViewController
하고 예외가있는 사람들의 경우 :
치명적인 오류 : 클래스에 구현되지 않은 초기화 프로그램 ‘init (coder :)’사용
빠른 팁 :
인스턴스화하려는 required init?(coder aDecoder: NSCoder)
대상에서 수동으로 구현UIViewController
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
더 자세한 설명이 필요하면 여기 에서 내 대답을 참조 하십시오
답변
빠른:
let viewController:UIViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("ViewController") as UIViewController
self.presentViewController(viewController, animated: false, completion: nil)
목표 C
UIViewController *viewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"ViewController"];
이 링크에는 동일한 스토리 보드에서 뷰 컨트롤러를 시작하기위한 코드가 있습니다.
/*
Helper to Switch the View based on StoryBoard
@param StoryBoard ID as String
*/
func switchToViewController(identifier: String) {
let viewController = self.storyboard?.instantiateViewControllerWithIdentifier(identifier) as! UIViewController
self.navigationController?.setViewControllers([viewController], animated: false)
}
답변
akashivskyy의 대답은 잘 작동합니다! 그러나 제시된 뷰 컨트롤러에서 돌아 오는 데 문제가있는 경우이 대안이 도움이 될 수 있습니다. 그것은 나를 위해 일했다!
빠른:
let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("someViewController") as! UIViewController
// Alternative way to present the new view controller
self.navigationController?.showViewController(vc, sender: nil)
Obj-C :
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MyStoryboardName" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"someViewController"];
[self.navigationController showViewController:vc sender:nil];
답변
스위프트 4.2 업데이트 코드는
let storyboard = UIStoryboard(name: "StoryboardNameHere", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "ViewControllerNameHere")
self.present(controller, animated: true, completion: nil)
답변
// "Main" is name of .storybord file "
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
// "MiniGameView" is the ID given to the ViewController in the interfacebuilder
// MiniGameViewController is the CLASS name of the ViewController.swift file acosiated to the ViewController
var setViewController = mainStoryboard.instantiateViewControllerWithIdentifier("MiniGameView") as MiniGameViewController
var rootViewController = self.window!.rootViewController
rootViewController?.presentViewController(setViewController, animated: false, completion: nil)
AppDelegate에 넣을 때 잘 작동했습니다.
답변
모달로 발표하려면 다음과 같은 것이 있어야합니다.
let vc = self.storyboard!.instantiateViewControllerWithIdentifier("YourViewControllerID")
self.showDetailViewController(vc as! YourViewControllerClassName, sender: self)