iOS 는 두 컨트롤 러 간 데이터 의 양 방향 전달 을 실현 합 니 다.

본 고 는 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

이상 이 바로 본문의 전체 내용 입 니 다.여러분 께 참고 가 될 수 있 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기