헛스윙 노트(화면 이동 편)
쓸데없이 쓰다.
※ 이것은 공부를 위한 노트입니다.
Navigation Controller 추가
storyboard 화면에서 Editor -> Embed In -> Navigation Controller 를 선택합니다.
작업storyboard
swift 코드에서storyboard의 실례를 얻다
var storyboard: UIStoryboard = UIStoryboard(name: // storyboardの名前 //, bundle: NSBundle.mainBundle())
swift 코드에서storyboard의 실례를 얻다
var storyboard: UIStoryboard = UIStoryboard(name: // storyboardの名前 //, bundle: NSBundle.mainBundle())
공정 경로를 얻는 방법.
storyboard의 initial view controller 가져오기
storyboard.instantiateInitialViewController()
storyboard의 임의의 보기 컨트롤러 실례 가져오기
storyboard.instantiateViewControllerWithIdentifier(// コントローラのIdentifier //);
버튼을 클릭하여 화면으로 건너뛰기 (segue)
segue를 사용하여 GUI를 통해 화면 마이그레이션을 만들 수 있음(매우 편리함)
관문 설정 방법은storyboard에서 단추에서 목적지로 이동하는 시야 컨트롤러를 누르면서 드래그하는 것입니다
화면을 이동할 때'prepareForSegue'를 호출했기 때문에 이 함수로 화면을 이동할 때의 동작을 쓰면 파라미터를 전달할 수 있습니다.
매개 변수'segue'의'destination ViewController'를 사용하여 보기 컨트롤러를 호출합니다. 매개 변수를 방법에 전달하면 다음 페이지로 전달할 수 있습니다!
매개 변수'segue'의'identifier'를 통해sege의 ID를 얻을 수 있습니다.이 매개 변수를 사용하면 여러 개의 숨김을 사용할 수 있습니다override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var vc: SecondPageViewController = segue.destinationViewController as! SecondPageViewController // 遷移先のビューコントローラを取得できる。
if(segue.identifier != nil) {
println(segue.identifier!); // セグエのIDが表示される
}
}
버튼을 클릭하여 화면으로 이동(presentViewController)
"presentViewController"를 사용하면 "sege"를 사용하지 않고 화면을 이동할 수 있습니다.
다음 화면 표시
self.presentViewController(// 遷移先のビューコントローラ //, animated: true, completion: nil)
다음 화면에서 이전 화면으로 돌아가기
self.dismissViewControllerAnimated(true, completion: nil)
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var vc: SecondPageViewController = segue.destinationViewController as! SecondPageViewController // 遷移先のビューコントローラを取得できる。
if(segue.identifier != nil) {
println(segue.identifier!); // セグエのIDが表示される
}
}
"presentViewController"를 사용하면 "sege"를 사용하지 않고 화면을 이동할 수 있습니다.
다음 화면 표시
self.presentViewController(// 遷移先のビューコントローラ //, animated: true, completion: nil)
다음 화면에서 이전 화면으로 돌아가기
self.dismissViewControllerAnimated(true, completion: nil)
화면 마이그레이션을 위한 애니메이션 지정
vs.modalTransitionStyle = UIModalTransitionStyle.FlipHorizontal
self.presentViewController(vs, animated: true, completion: nil)
viewDidLoad 호출 시 경고 발생
self.presentViewController를 사용하여 화면 마이그레이션 처리를 "viewDidLoad"로 호출할 때 "Presenting view controllers on detached view controllers is discouged"라는 경고가 발생합니다.
조사에 따르면 아래의 방법으로 화면을 옮기면 경고가 나오지 않는다
확인했는데 왜 이렇게 잘 되는지 모르겠어요
self.view.window?.rootViewController!.presentViewController(vs!, animated: animated, completion: completion)
segue와presentViewController의 차이점 사용
느낌은 다음과 같다
간단한 화면 이동 상황에서 segue를 사용하여 비교적 쉽게 실현할 수 있다
"상태가 다르면 마이그레이션 목적지도 달라집니다."
'다른 storyboard로 이동하는 화면'등 상황에서 복잡한 화면 이동을 할 때 여기
응용-화면을 지정한storyboard로 이동 -
버튼을 눌렀을 때 화면을 다른storyboard로 이동합니다 @IBAction func doTouchBtn(sender: AnyObject) {
// storyboardのインスタンス取得
var storyboard: UIStoryboard = UIStoryboard(name: "Modal1", bundle: NSBundle.mainBundle())
// Modal1ViewController取得 ※ ModalViewControllerは自作のViewController
var vs: Modal1ViewController = storyboard.instantiateInitialViewController() as! Modal1ViewController
// アニメーション設定
vs.modalTransitionStyle = UIModalTransitionStyle.PartialCurl
// 画面遷移
self.presentViewController(vs, animated: true, completion: nil)
}
Reference
이 문제에 관하여(헛스윙 노트(화면 이동 편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ukyoda/items/a50e6cc84ee7e006023d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
@IBAction func doTouchBtn(sender: AnyObject) {
// storyboardのインスタンス取得
var storyboard: UIStoryboard = UIStoryboard(name: "Modal1", bundle: NSBundle.mainBundle())
// Modal1ViewController取得 ※ ModalViewControllerは自作のViewController
var vs: Modal1ViewController = storyboard.instantiateInitialViewController() as! Modal1ViewController
// アニメーション設定
vs.modalTransitionStyle = UIModalTransitionStyle.PartialCurl
// 画面遷移
self.presentViewController(vs, animated: true, completion: nil)
}
Reference
이 문제에 관하여(헛스윙 노트(화면 이동 편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ukyoda/items/a50e6cc84ee7e006023d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)