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#>
우 리 는 초점 에 맞 춰 차 를 돌리 기만 하면 코드 블록 을 빠르게 만 들 수 있 습 니 다. 여러분 이 해 보 세 요. 코드 를 쓸 때 매우 편리 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swift의 패스트 패스Objective-C를 대체하기 위해 만들어졌지만 Xcode는 Objective-C 런타임 라이브러리를 사용하기 때문에 Swift와 함께 C, C++ 및 Objective-C를 컴파일할 수 있습니다. Xcode는 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.