헛스윙 노트(화면 이동 편)

8243 단어 Swift아이폰 개발
Swift에서 아이폰 앱을 만들 때 아는 점.
쓸데없이 쓰다.
※ 이것은 공부를 위한 노트입니다.

Navigation Controller 추가


storyboard 화면에서 Editor -> Embed In -> Navigation Controller 를 선택합니다.

작업storyboard


swift 코드에서storyboard의 실례를 얻다


var storyboard: UIStoryboard = UIStoryboard(name: // storyboardの名前 //, bundle: NSBundle.mainBundle())

  • NSBundle.mainBundle()
    공정 경로를 얻는 방법.
  • storyboard의 initial view controller 가져오기

    storyboard.instantiateInitialViewController()
    
  • 「as!」또는 "as´63;"역할 할당 필요
  • storyboard의 임의의 보기 컨트롤러 실례 가져오기

    
    storyboard.instantiateViewControllerWithIdentifier(// コントローラのIdentifier //);
    
    
  • Identifier는storyboard로 설정된 컨트롤러의 ID
  • 버튼을 클릭하여 화면으로 건너뛰기 (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)
    
  • 첫 번째 파라미터는 진짜/가짜를 통해 애니메이션 여부를 지정합니다
  • compuletion은 폐쇄 지정입니다.아직 잘 모르겠어요
  • 화면 마이그레이션을 위한 애니메이션 지정

    vs.modalTransitionStyle = UIModalTransitionStyle.FlipHorizontal
    self.presentViewController(vs, animated: true, completion: nil)
    
  • 변수'vs'는 UIViewController의 실례
  • UIModalTransitionStyle을 통해 여러 애니메이션을 지정할 수 있습니다.
  • 밑에서 나오는 것 같은 녀석
  • FlipHorizontal=> 카드를 뒤집는 듯한 느낌
  • 크로스디스커버리=제이큐리모바일의 화면이동같은것.페이드아웃?
  • Partiial Curl=> 캘린더의 애니메이션 보기
  • 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
    간단한 화면 이동 상황에서 segue를 사용하여 비교적 쉽게 실현할 수 있다
  • presentViewController
    "상태가 다르면 마이그레이션 목적지도 달라집니다."
    '다른 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)
        }
    
    

    좋은 웹페이지 즐겨찾기