iOS 는 두 컨트롤 러 간 데이터 의 양 방향 전달 을 실현 합 니 다.
우선 컨트롤 러 A,컨트롤 러 B 등 두 개의 컨트롤 러 가 있다.
A->B:데 이 터 는 컨트롤 러 A 에서 컨트롤 러 B 로 전 달 됩 니 다.이것 은 데이터 의 순 전 이 라 고 합 니 다.데 이 터 는 컨트롤 러 B 에서 컨트롤 러 A 로 전달 되 는데 이것 을 역 전 이 라 고 한다.
순 전:일반적으로 목표 컨트롤 러 대상 을 만 들 고 데 이 터 를 대상 의 구성원 에 게 할당 합 니 다.
역 전:일반적으로 프 록 시 를 사용 하여 이 루어 집 니 다.그 중에서 컨트롤 러 A 는 컨트롤 러 B 의 에이전트(컨트롤 러 A 감청 컨트롤 러 B,컨트롤 러 B 알림 컨트롤 러 A)입 니 다.
다음은 블 로 거들 이 쓴 두 제어 간 에 데이터 의 양 방향 전달 을 실현 하 는 app 의 demo 입 니 다.
1.이것 은 인터페이스 디자인:
FirstViewController.h
#import <UIKit/UIKit.h>
@interface FirstViewController : UIViewController
@end
FirstViewController.m
#import "FirstViewController.h"
#import "SecondViewController.h"
@interface FirstViewController ()<SecondViewControllerDelegate>
/** , */
@property (weak, nonatomic) IBOutlet UITextField *first2Second;
/** */
@property (weak, nonatomic) IBOutlet UITextField *displayWithSecond;
@end
@implementation FirstViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
#pragma mark - Navigation
//
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
SecondViewController *vc = (SecondViewController *)segue.destinationViewController;
if (self.first2Second.text.length > 0) {
//
vc.name = self.first2Second.text;
}
// SecondViewController
vc.delegate = self;
}
#pragma mark - SecondViewControllerDelegate
-(void)secondViewControllerDidDit:(SecondViewController *)viewController andName:(NSString *)name
{
// ( )
self.displayWithSecond.text = name;
}
@end
SecondViewController.h
#import <UIKit/UIKit.h>
@class SecondViewController;
@protocol SecondViewControllerDelegate <NSObject>
/** SecondViewControllerDelegate */
-(void)secondViewControllerDidDit:(SecondViewController *)viewController andName:(NSString *)name;
@end
@interface SecondViewController : UIViewController
@property(nonatomic,strong) NSString *name;
@property(nonatomic,weak) id<SecondViewControllerDelegate> delegate;
@end
SecondViewController.m
#import "SecondViewController.h"
@interface SecondViewController ()
/** , */
@property (weak, nonatomic) IBOutlet UITextField *second2First;
/** */
@property (weak, nonatomic) IBOutlet UITextField *displayWithFirst;
/** , , */
- (IBAction)second2First:(UIButton *)sender;
@end
@implementation SecondViewController
- (void)viewDidLoad {
[super viewDidLoad];
//
self.displayWithFirst.text = self.name;
}
// ,
- (IBAction)second2First:(UIButton *)sender {
if (self.second2First.text.length > 0) {
// ,
if ([self.delegate respondsToSelector:@selector(secondViewControllerDidDit:andName:)]) {
[self.delegate secondViewControllerDidDit:self andName:self.second2First.text];
}
}
[self.navigationController popViewControllerAnimated:YES];
}
@end
이상 이 바로 본문의 전체 내용 입 니 다.여러분 께 참고 가 될 수 있 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
View의 레이아웃 방법을 AutoLayout에서 따뜻한 손 계산으로 하면 성능이 9.26배로 된 이야기이 기사는 의 15 일째 기사입니다. 어제는 에서 이었습니다. 손 계산을 권하는 의도는 없고, 특수한 상황하에서 계측한 내용입니다 화면 높이의 10 배 정도의 contentView가있는 UIScrollView 레이아...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.