iOS 개발 중인 ViewController의 페이지 점프 및 팝업 모드

4511 단어
ViewController 페이지에서 한 Controller에서 다른 Controller로 이동할 때 일반적으로 다음과 같은 두 가지가 있다. 1. UINavigationController를 이용하여pushViewController를 호출하여 이동한다.이런 방식은 창고를 압수하고 출고하는 방식을 채택하여 Controller의 관리를 진행한다.popViewControllerAnimated 메서드를 호출하면 반환됩니다.
 
  
    PickImageViewController *ickImageViewController = [[PickImageViewController alloc] init];
    [self.navigationController pushViewController: ickImageViewController animated:true];
    [ickImageViewController release];

2. UIViewController 자체의presentModalViewController를 이용하여 점프를 진행한다.dismissModalViewControllerAnimated 방법을 호출하면 되돌아갈 수 있습니다.
 
  
    PickImageViewController *ickImageViewController = [[PickImageViewController alloc] init];
    [self presentModalViewController:ickImageViewController animated:YES];
//
[self dismissModalViewControllerAnimated:YES];

Present ViewController Modally 1, 주요 용도로 모드를 팝업하는 ViewController는 IOS에서 유용한 기술로 바뀌었고 UIKit는 모드를 표시하는 데 전문적으로 사용되는 ViewController, 예를 들어 UIImagePicker Controller 등을 제공했다.팝업 모드 ViewController는 주로 다음과 같은 몇 가지 상황에 사용된다. 1. 사용자 입력 정보를 수집하는 경우. 2. 일부 내용을 임시로 보여주는 경우. 3. 작업 모드를 임시로 바꾸는 경우. 4. 해당 장치의 방향 변화(서로 다른 방향에 대해 각각 두 개의 ViewController를 생각하는 경우). 5.새로운view 등급을 표시하는 이 몇 가지 상황은 프로그램의 정상적인 실행 절차를 잠시 중단하는데, 주요 역할은 정보를 수집하거나 표시하는 것이다.2. 몇 가지 개념과 자주 사용하는 설정 1. presenting view controller Vs presented view controller A에서view controller B를 모드로 표시할 때 A는presenting view controller(팝업 VC)로 충당하고 B는presented view controller(팝업 VC)로 한다.공식 문서에서 이 두 가지는 delegate를 통해 상호작용을 할 것을 권장합니다. UIImagePicker Controller를 사용하여 시스템 앨범에서 사진을 선택하거나 사진을 찍으면 이미지 Picker Controller와 팝업된 VC 사이가 UIImagePicker Controller Delegate를 통해 상호작용을 하는 것을 알 수 있습니다.따라서 우리는 실제 응용에서 이 원칙을 준수하고 팝업된 VC에서delegate를 정의한 다음에 팝업 VC에서 이 에이전트를 실현하면 비교적 편리하게 양자간의 상호작용을 실현할 수 있다.2. Modal Presentation Styles(팝업 스타일)는presenting VC의modal Presentation Style 속성을 설정하여 View Controller를 팝업할 때의 스타일을 설정할 수 있다. 다음과 같은 네 가지 스타일이 있는데 그 정의는 다음과 같다.
 
  
typedef enum {
    UIModalPresentationFullScreen = 0,
    UIModalPresentationPageSheet,
    UIModalPresentationFormSheet,
    UIModalPresentationCurrentContext,
} UIModalPresentationStyle;

UIModalPresentationFullScreen은 VC를 팝업할 때presented VC가 전체 화면을 가득 채웁니다. VC를 팝업하는wantsFullScreen Layout이 YES로 설정되어 있으면 상태 표시줄 아래로 채워집니다. 그렇지 않으면 상태 표시줄 아래로 채워지지 않습니다.
 
UIModalPresentationPageSheet은 팝업이 VC일 때presented VC의 높이는 현재 화면의 높이와 같고 너비와 세로 화면 모드의 화면 너비는 같으며 덮어쓰지 않은 영역은 어두워지고 사용자의 클릭을 막는다. 이런 팝업 모드에서는 세로 화면은 UIModalPresentationFullScreen의 효과와 마찬가지로 가로 화면일 때 양쪽이 어두워지는 구역을 남긴다.
 
UIModalPresentationFormSheet 이런 모드에서presentedVC의 높이와 너비는 모두 화면 크기보다 작고presentedVC는 중간에 표시되며 사방은 어두워진 구역으로 남는다.
 
UIModalPresentationCurrentContext 이런 모드에서presentedVC의 팝업 방식은presentingVC의 부모VC와 같다.
 
이 네 가지 방식은 아이패드에 모두 유효하지만, 아이폰과 아이폰 터치 위에 시스템은 항상 UIModal Presentation Full Screen 모드에서presented VC를 표시합니다.
 
3, Modal Transition Style(팝업 시 애니메이션 스타일)
 
presented VC의modalTransitionStyle 속성을 설정하여presented VC를 팝업할 때 장면 전환 애니메이션의 스타일을 설정할 수 있습니다. 그 정의는 다음과 같습니다.
 
  
typedef enum {
        UIModalTransitionStyleCoverVertical = 0,
        UIModalTransitionStyleFlipHorizontal,
        UIModalTransitionStyleCrossDissolve,
        UIModalTransitionStylePartialCurl,
} UIModalTransitionStyle;

우리는 바닥에서 미끄러져 들어가고 수평으로 뒤집혀 들어가며 교차 용해와 페이지를 넘기는 네 가지 스타일을 선택할 수 있다.이 네 가지 스타일은 기기의 제한을 받지 않는다. 즉, 아이폰이든 아이패드든 우리가 지정한 스타일에 따라 전환 효과를 나타낸다.
 
4, Dismiss Modal ViewController(팝업된 VC가 사라짐)
 
presented VC를 사라지면 다음 두 함수 중 하나를 호출해서 완성할 수 있습니다
 
  
dismissModalViewControllerAnimated:                 // ,
dismissViewControllerAnimated:completion:

누가 이 사라진presentedVC를 호출하는 방법: 정확한 방법은'누가 오염되고 누가 관리하는가'이다. 즉,presentingVC는 위의 방법을 호출하여presentedVC의 디스플레이를 취소하는 것이다.이렇게 하면 VC가 정말 사용자가 하지 않는 선택에 따라 다른view controller가 팝업될 수 있다. 팝업된view controller를 표시할 필요가 없을 때 [self dismiss Modal View Controller Animated]를 직접 호출하면 사라질 수 있고, 구체적으로 어떤 종류의view controller에 관심을 두지 않아도 된다.물론 시스템은 여기서 최적화를 했다. 우리가presentedVC에서 위의 방법을 호출할 때 시스템은 자동으로 이 메시지를 상응하는presentingVC에 전달한다. 그러면 누가 자신을 팝업하든 필요하지 않을 때 직접 사라지는 기능을 실현할 수 있다.응용 프로그램에서 구체적인 상황을 보아야 한다. 만약presentedVC가presentingVC와 데이터 전달이 필요하다면presentingVC가 실현하는 프록시 함수에서dismiss가 팝업하는viewcontroller를 권장한다.

좋은 웹페이지 즐겨찾기