[iOS] 화면 이동 방법 요약

8864 단어 SwiftiOS
화면 이동 방법을 총결하다.

전환 및 모드 전환 추진


우선 iOS 응용 프로그램은 두 가지 화면 이동 방법이 있다.
  • 추송 과도
  • 모드 전환
  • 설치 방법은 뒤에 쓰고, 우선 둘의 구분을 정리하여 사용한다.

    과도를 추진하다


    대충 말하면 일반적인 화면 이동이다.
    푸시라고 불리는 Navigation Contoller는 스크린 스택을 가지고 있습니다.
    내 생각에는push와 동시에 그 창고로 옮겨졌기 때문인 것 같다.
    구체적인 사용 상황으로는 패턴 이동을 해야 할 때를 제외하고는 모두 이런 느낌이다. 예를 들면 아래인가.
  • NavigationBar의 귀환, 전진 버튼이 움직이는 화면
  • 모드 변환


    '모달'(modal)이라는 단어를 어떻게 번역해야 할지 많이 찾아봤지만 모르겠어요...
    아래에서 갑자기 나타나는 화면이라는 설명이 자주 나온다.
    다만, 아래에서 다음 화면을 꺼내는 것이 목적이 아니다.
    Modality라는 단어의 뜻은 몇 가지 의미가 있습니다.
    2. (생리학) 시각, 청각, 촉각 등 오감 또는 감각.또 외부를 감지하는 수단을 사용한다.또 이런 느낌을 촉진하는 인공 정보 전달 수단이다.
    모드 - 웨이크쇼넬리 일본어판
    아마 여기서'오감에 호소하는 인공 정보 전달 수단'이라는 뜻일 거예요.
    나는 몇 편의 검색된 일본어 보도를 보았지만, 아주 좋은 번역어를 사용하는 예는 많지 않다.
    뜻을 감안하면 이 자리에서는'응답을 기다린다'고 할 수 있다.
    Human Interface Guidelines에서 이 섹션을 참조하는 경우
    졸역
    응답 대기는 사용자가 작업을 완료하거나 메시지나 보기를 거부하기 전에 다른 작업을 수행하지 않는 데 사용됩니다.작업표(?),경고, 작업 보기(?)큰 장면을 렌더링하는 동안 이 고장이 발견되었습니다.화면에 응답을 기다리는 보기를 표시하면 사용자는 단추를 누르거나 응답 처리를 종료해야 합니다.
    Modality creates focus by preventing people from doing other things until they complete a task or dismiss a message or view. Action sheets, alerts, and activity views provide modal experiences. When a modal view appears onscreen, the user must make a choice by tapping a button or otherwise exiting the modal experience.
    Human Interface Guidelines
    즉, 사용자가 절대적으로 입력해야 할 정보가 있는 상황에서 일시적으로 화면 이동이 발생하는 처리는 패턴 이동이다.
    Human Interface Guidelines에도 쓰여 있지만 많이 사용해야 할 방법은 아닙니다.
    기본적으로 어떤 주요 처리를 하고 싶은 사용자는 다른 조작을 하게 하여 방해하기 때문에 많이 사용하면 UX가 낮아지기 때문에 진정으로 필요한 상황 이외에 사용해서는 안 된다.
    예를 들면 분명히 동영상 앱을 틀어놓고 영상을 틀기 전에 경보 화면이 여러 개 나오는데 매번'OK'를 누르면 답답한데?
    구체적인 예는 다음과 같다.
  • 장치에 대한 접근 허가(카메라, 사진첩, 위치 정보 등. 이것은 최소한으로 해야 App Store에 공개할 수 있다)
  • 사용자 ID/비밀번호 입력 화면
  • 표 보기의 각 항목(예를 들어 메일 프로그램의 개별 메일 열람 등)에 접근한다
  • 인터페이스 생성기 또는 코드


    그럼, 나는 구체적인 설치 방법을 총결하고 싶다
    간단한 화면 이동이라면 인터페이스 구축기를 사용하여 스토리보드를 편집할 수 있으며 프로그래밍 없이 실행할 수 있다.
    예를 들어 사용자가 화면 버튼을 눌렀을 때 화면이 이동하는 처리라면 GUI로 간단하게 만들 수 있다.
    만약 네가 단지 더 복잡한 조건을 부가하고 싶을 뿐이라면, 너는 코드를 써야 한다.

    Interface Builder


    인터페이스 생성기를 어떻게 사용하는지 설명합니다.

    인터페이스 구축기에서 변환 밀어넣기


    비프로그래밍 방식으로 화면 이동을 실현하는 방법을 작성하다.

    완성형으로 이런 느낌이에요.
    다음 순서대로 진행하다.
  • "Single Page Application"으로 새 프로젝트를 만듭니다
  • "Main.storyboard"를 선택합니다
  • 표시되는 ViewController를 선택합니다
  • Editor → Embed In → Navigation Controller 를 선택합니다
  • 새 ViewController를 추가합니다
  • 첫 번째 ViewController에 Button을 추가합니다
  • Control을 누른 채 Button을 두 번째 화면으로 드래그합니다.
    ※ 이해하기 쉽도록 첫 번째 배경은 빨간색, 두 번째 배경은 파란색으로 바뀌었습니다
  • 여기까지 오면 다음과 같은 표시가 나온다.
    참고로 이 화살표는 Segue라고 합니다.

    디스플레이를 선택하면 밀어넣기 변환을 수행할 수 있습니다.
    시뮬레이터로 작동하면 이런 화면입니다.

    Button을 누릅니다.

    2장으로 옮겼네.
    Navigation Bar의 Back을 누르면 이전 화면으로 돌아갈 수 있습니다.

    인터페이스 구축기에서 모드 변환


    모드 과도도 과도와 중도를 추진할 때까지 같은 방식으로 실현할 수 있다.

    이제 Present Modally 를 선택합니다.
    모드 변환으로 설정할 수 있습니다.
    모드로 변환할 때 내비게이션 표시줄을 표시하지 않습니다.
    이곳은 추송 과도와는 매우 다르다.
    지금 설명한 응용 프로그램의 예는 패턴이 바뀌면 돌아갈 수 없다.
    모드를 닫고 목표 화면을 옮기는 처리는 개발자가 실시해야 한다.

    용어 정리


    인터페이스 생성기에서 스크린과 스크린을 연결하는 화살표를'세그먼트'라고 합니다.
    또한 화면을 Scene이라고 합니다.
    스토리보드에서 Scene과 Scene을 연결하는 것은 Segue입니다.

    코드


    코드로 화면 이동을 진행하다.
    인터페이스 빌더는 미세한 UI를 직관적으로 조정할 수 있기 때문에 기본적으로 사용해야 한다.
    하지만 엔지니어의 입장에서 보면 코드 밖에 UI 설정이 있기 때문에 처리하기 어려운 부분이 있습니다.
    원교지주의자라면 Interface Builder를 전혀 사용하지 않고 모두 코드로 한다.
    그건 좀 과격하지만 Interface Builder에서 어디까지 하느냐는 팀의 차이인 것 같아요.
    나는 코드에서 화면 이동을 실현할 때 Segue를 사용하느냐, 아니면 Segue를 사용하지 않느냐가 초점이라고 생각한다.
    방법으로는 무엇이든지 다 된다.

    Segue 추진 변환 사용


    엄밀히 말하면 처음에 소개한 인터페이스 생성기를 사용하여 이동하는 방법도 Segue를 사용한다.
    단지 그 Segue의 발동점일 뿐, 코드에 쓰일지 안 쓰일지는 다르다.
    인터페이스 빌더에서 제어 키를 누른 채 소스 ViewController를 드래그하여 대상 View에 배치합니다.
    내려놓을 때 아까와 같이 "Show"또는 "Present Modally"를 선택하므로 "Show"를 선택하십시오.
    그래서 나는 두 보기 사이에 화살표가 생겼다고 생각한다.

    이 화살표는 Segue를 나타냅니다.
    Segue의 identifier에 이름을 넣으세요.
    무엇이든지 좋습니다. 여기에 예를 들어 SegueName이 추가되었습니다.
    그리고 원본을 이전하는ViewController에서 화면 이전을 하려는 장면에 다음 코드를 넣으십시오.
    //SegueNameはInterfaceBuilder上で自分がつけた名前にしてね
        performSegue(withIdentifier: "SegueName", sender: nil)
    
    sender에서 변수를 지정하면 값을 받아들일 수 있기 때문에 모든 인터페이스 Buider에서 진행된 예보다 동작의 폭이 넓습니다.
    구글의 경우 self를 추가하는 예도 있지만 View Controller에서는 생략할 수 있다.

    Segue 모드 변환 사용


    인터페이스 빌더에서 구성을 만들 때 [디스플레이] 대신 [프리셋 모듈] 을 선택합니다.
    이후 추진 과도와 같다.

    Segue의 추진 변환을 사용하지 않음


    Segue를 사용하여 인코딩하지 않으면 어떻게 될까요?
    여기서 우리는 코드로 Storyboard를 호출하여 이동 목표의ViewController를 지정하고 이동 방법을 소개할 것입니다.
    먼저 대상 ViewController의 Storyboard ID에 이름을 입력합니다.

    여기는 넥스트뷰입니다.
    이후에 이전하고 싶은 곳에 아래의 코드를 쓰세요.
    let storyboard: UIStoryboard = self.storyboard!
    let nextView = storyboard.instantiateViewController(withIdentifier: "nextView")
    navigationController?.pushViewController(nextView, animated: true)
    

    Segue 모드 변환 없음


    대상 ViewController의 Storyboard ID에 이름을 추가하기 전과 같습니다.
    let storyboard: UIStoryboard = self.storyboard!
    let nextView = storyboard.instantiateViewController(withIdentifier: "nextView")
    //ここがpushとは違う
    self.present(nextView, animated: true, completion: nil)
    
    돌아가고 싶을 때 디스미스로.

    겸사겸사 말씀드리다


    이동 목적지의View/ViewController를 생성하려면 코드로 기술할 수 있기 때문에 인터페이스 구축기를 사용하지 않고 화면 이동을 쓸 수도 있습니다.
    하지만 UI를 자세히 조정하려면 Interface Builder를 솔직하게 사용하는 것이 좋습니다.

    경품


    트위터에서 해.엔지니어의 지인이 전혀 없기 때문에 적극적으로 연결하고 싶어요!
    가능하다면 주목하세요.

    좋은 웹페이지 즐겨찾기