Block 사용

4360 단어 iosblock
OS 개발: Block 을 사용 하여 두 인터페이스 사이 의 값 전달 (Block 고급 용법: Block 값 전달)
원문   http://winann.blog.51cto.com/4424329/1438480
        Block 을 사용 하 는 곳 이 많 습 니 다. 그 중에서 전송 값 은 그 중의 일부분 일 뿐 입 니 다. 다음은 Block 이 두 인터페이스 사이 의 전송 값 을 소개 합 니 다.
        먼저 생각 을 말 하 다.
        우선, 두 개의 보기 컨트롤 러 를 만 들 고 첫 번 째 보기 컨트롤 러 에 UILabel 과 하나의 UIButton 을 만 듭 니 다. 그 중에서 UILabel 은 두 번 째 보기 컨트롤 러 가 보 내 온 문자열 을 표시 하기 위해 서 입 니 다. UIButton 은 push 에서 두 번 째 인터페이스 까지 입 니 다.
        두 번 째 화면 은 하나의 UITextField 만 있 습 니 다. 문 자 를 입력 하고 첫 번 째 화면 으로 돌아 갈 때 두 번 째 보기 가 사라 질 때 두 번 째 화면 에 있 는 TextFiled 의 문 자 를 첫 번 째 화면 에 전달 하고 UILabel 에 표시 합 니 다.
사실 핵심 코드 는 몇 줄 코드 입 니 다.
다음은 주요 코드 입 니 다. (저 는 story Board 로 만 든 프로젝트 이기 때문에 위의 속성 과 해당 하 는 방법 은 시스템 으로 만 든 outlet 입 니 다)
1. 두 번 째 보기 컨트롤 러 의. h 파일 에서 Block 속성 을 정의 합 니 다.
typedef void (^ReturnTextBlock)(NSString *showText);

@interface TextFieldViewController : UIViewController

@property (nonatomic, copy) ReturnTextBlock returnTextBlock;

- (void)returnText:(ReturnTextBlock)block;

@end

        첫 번 째 줄 코드 는 설명 할 Block 의 이름 을 다시 정의 하 는 것 입 니 다.
    ReturnTextBlock

        이렇게 하면 아래 에서 사용 할 때 편리 합 니 다.
        세 번 째 줄 은 블록 속성 을 정의 합 니 다.
        네 번 째 줄 은 첫 번 째 인터페이스 에서 Block 구문 블록 이 들 어 오 는 함수 입 니 다. 사용 하지 않 아 도 되 지만 코드 의 작성 량 을 줄 일 수 있 습 니 다.
둘째, 두 번 째 보기 컨트롤 러 를 실현 하 는 방법
- (void)returnText:(ReturnTextBlock)block {
  self.returnTextBlock = block;
}
- (void)viewWillDisappear:(BOOL)animated {
  
  if (self.returnTextBlock != nil) {
    self.returnTextBlock(self.inputTF.text);
  }
}

        그 중에서 inputTF 는 보기 의 UITextField 입 니 다.
        첫 번 째 방법 은 정 의 된 그 방법 입 니 다. 들 어 오 는 Block 구문 블록 을 이러한 인 스 턴 스 변수 returnTextBlock (. h 에서 정의 하 는 속성) 에 저장 한 다음 에 타 이 밍 을 찾 아 호출 하 는 것 입 니 다. 이 타 이 밍 은 바로 위 에서 말 한 것 입 니 다. 보기 가 사라 질 때 다시 써 야 합 니 다.
- (void)viewWillDisappear:(BOOL)animated;

방법
3. 첫 번 째 보기에 서 두 번 째 보기 컨트롤 러 를 얻 고 두 번 째 보기 컨트롤 러 로 정 의 된 속성 을 호출 합 니 다.
다음 과 같은 방법 으로 작성 한다.
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
  // Get the new view controller using [segue destinationViewController].
  // Pass the selected object to the new view controller.
  TextFieldViewController *tfVC = segue.destinationViewController;
  
  [tfVC returnText:^(NSString *showText) {
    self.showLabel.text = showText;
  }];
}

     코드 에 있 는 설명 을 볼 수 있 습 니 다. 시스템 은 [segue destinationView Controller] 로 새로운 보기 컨트롤 러 를 얻 을 수 있 습 니 다. 즉, 우리 가 말 하 는 두 번 째 보기 컨트롤 러 입 니 다.
        이때 위 에서 (첫 번 째 단계 에서) 정 의 된 그 방법 이 작용 합 니 다. [tfVC return] 을 쓰 면 텍스트 Enter  ,시스템 은 자동 으로 하 나 를 알려 줍 니 다: 
tfVC returnText:<#^(NSString *showText)block#>
우 리 는 초점 에 맞 춰 차 를 돌리 기만 하면 코드 블록 을 빠르게 만 들 수 있 습 니 다. 여러분 이 해 보 세 요. 코드 를 쓸 때 매우 편리 합 니 다.

좋은 웹페이지 즐겨찾기