보기 사이의 이동으로 데이터 리셋을 완성하는 세 가지 방법
10111 단어 뷰
방법 1: 전역 변수 사용
Master View Controller를 글로벌 변수로 설정하여 Data View Controller에서 직접 액세스합니다.
먼저 AppDelegate를 프로그램에서 위임합니다.h에서 글로벌 변수를 선언합니다.
#import <UIKit/UIKit.h>
#import "Global_MasterViewController.h"
#import "Property_MasterViewController.h"
#import "Delegate_MasterViewController.h"
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) UITabBarController *tbc;
@property (strong, nonatomic) Global_MasterViewController *g_mVC; //
@end
그리고 글로벌...MasterViewController 클래스:
- (void)viewDidLoad
{
[super viewDidLoad];
//
self.navigationItem.title = @"Global";
// Modal , Data
CGRect rect = CGRectMake(120.0, 230.0, 80.0, 40.0);
self.modal_button = [UIButton buttonWithType:UIButtonTypeSystem];
self.modal_button.frame = rect;
[self.modal_button setTitle:@"Modal" forState:UIControlStateNormal];
[self.modal_button addTarget:self action:@selector(modalToDataView:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.modal_button];
// data , data
rect = CGRectMake(100.0, 300.0, 120.0, 40.0);
self.data_label = [[UILabel alloc] initWithFrame:rect];
self.data_label.textAlignment = NSTextAlignmentCenter;
[self.view addSubview:self.data_label];
}
// Data
-(void)modalToDataView:(id)sender
{
Global_DataViewController *g_dVC = [[Global_DataViewController alloc] init];
g_dVC.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:g_dVC animated:YES completion:nil];
}
이 보기에는modal 단추가 있습니다. 누르면 Data 보기로 이동합니다. Data 보기에는 텍스트 입력 상자가 있습니다.
이 보기의 데이터 탭은 데이터 보기에서 입력한 데이터를 표시하는 데 사용됩니다.이어서 글로벌...DataViewController 클래스:
- (void)viewDidLoad
{
[super viewDidLoad];
// ,
self.tf = [[UITextField alloc] initWithFrame:CGRectMake(100.0, 200.0, 120.0, 100.0)];
self.tf.placeholder = @"Input some text";
[self.view addSubview:self.tf];
// Dismiss ,dismiss
self.dismiss_button = [UIButton buttonWithType:UIButtonTypeSystem];
self.dismiss_button.frame = CGRectMake(130.0, 320.0, 60.0, 40.0);
[self.dismiss_button setTitle:@"Dismiss" forState:UIControlStateNormal];
[self.dismiss_button addTarget:self action:@selector(modalBack:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.dismiss_button];
}
// Master ,
-(void)modalBack:(id)sender
{
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; // appDelegate g_mVC
appDelegate.g_mVC.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self dismissViewControllerAnimated:YES completion:^{
appDelegate.g_mVC.data_label.text = self.tf.text; // g_mVC
}];
}
방법2: 데이터 구성원 사용
Master View Controller를 Data View Controller의 구성원 변수로 설정한 다음 Data View Controller에서 액세스할 수 있습니다.
먼저 Master View Controller 클래스가 Data View Controller 클래스인 구성원 변수를 설정합니다.
@interface Property_DataViewController : UIViewController
@property (strong, nonatomic) UIButton *dismiss_button;
@property (strong, nonatomic) UITextField *tf;
@property (strong, nonatomic) Property_MasterViewController *p_mVC; // Master Data
@end
다음 PropertyMasterViewController 클래스:
- (void)viewDidLoad
{
[super viewDidLoad];
//
self.navigationItem.title = @"Property";
// Modal , Data
CGRect rect = CGRectMake(120.0, 230.0, 80.0, 40.0);
self.modal_button = [UIButton buttonWithType:UIButtonTypeSystem];
self.modal_button.frame = rect;
[self.modal_button setTitle:@"Modal" forState:UIControlStateNormal];
[self.modal_button addTarget:self action:@selector(modalToDataView:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.modal_button];
// data , data
rect = CGRectMake(100.0, 300.0, 120.0, 40.0);
self.data_label = [[UILabel alloc] initWithFrame:rect];
self.data_label.textAlignment = NSTextAlignmentCenter;
[self.view addSubview:self.data_label];
}
// Data
-(void)modalToDataView:(id)sender
{
Property_DataViewController *p_dVC = [[Property_DataViewController alloc] init];
p_dVC.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:p_dVC animated:YES completion:^{
p_dVC.p_mVC = self; // Data master self
}];
}
Data master self。
Property_DataViewController :
- (void)viewDidLoad
{
[super viewDidLoad];
// ,
self.tf = [[UITextField alloc] initWithFrame:CGRectMake(100.0, 200.0, 120.0, 100.0)];
self.tf.placeholder = @"Input some text";
[self.view addSubview:self.tf];
// Dismiss ,dismiss
self.dismiss_button = [UIButton buttonWithType:UIButtonTypeSystem];
self.dismiss_button.frame = CGRectMake(130.0, 320.0, 60.0, 40.0);
[self.dismiss_button setTitle:@"Dismiss" forState:UIControlStateNormal];
[self.dismiss_button addTarget:self action:@selector(modalBack:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.dismiss_button];
}
// Data
-(void)modalBack:(id)sender{
self.p_mVC.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self dismissViewControllerAnimated:YES completion:^{ self.p_mVC.data_label.text = self.tf.text; // self.p_mVC }];}
방법3: 사용 의뢰는 마스터 보기 컨트롤러가 Data 보기 컨트롤러의 데이터를 사용하기 때문에 Data 보기 컨트롤러에서 의뢰를 성명한 다음에 마스터 보기 컨트롤러는 의뢰를 실현하는 방법을 통해 Data 보기 컨트롤러에서 데이터를 직접 얻을 수 있다.먼저 Data 뷰에서 위임된 선언 섹션을 살펴보십시오.
//
@protocol DataCallBackDelegate <NSObject>
-(void)willDismissModalView:(id)sender;
@end
@interface Delegate_DataViewController : UIViewController
@property (strong, nonatomic) UIButton *dismiss_button;
@property (strong, nonatomic) UITextField *tf;
@property (weak, nonatomic) id<DataCallBackDelegate> dataDelegate; // , weak , retain cycle
@end
그리고 Delegate.MasterViewController의 인터페이스 섹션:
@interface Delegate_MasterViewController : UIViewController <DataCallBackDelegate> // confirm to DataCallBackDelegate
@property (strong, nonatomic) UIButton *modal_button;
@property (strong, nonatomic) UILabel *data_label;
@end
구현 섹션:
- (void)viewDidLoad
{
[super viewDidLoad];
//
self.navigationItem.title = @"Delegate";
// Modal , Data
CGRect rect = CGRectMake(120.0, 230.0, 80.0, 40.0);
self.modal_button = [UIButton buttonWithType:UIButtonTypeSystem];
self.modal_button.frame = rect;
[self.modal_button setTitle:@"Modal" forState:UIControlStateNormal];
[self.modal_button addTarget:self action:@selector(modalToDataView:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.modal_button];
// data , data
rect = CGRectMake(100.0, 300.0, 120.0, 40.0);
self.data_label = [[UILabel alloc] initWithFrame:rect];
self.data_label.textAlignment = NSTextAlignmentCenter;
[self.view addSubview:self.data_label];
}
// Data
-(void)modalToDataView:(id)sender
{
Delegate_DataViewController *d_dVC = [[Delegate_DataViewController alloc] init];
d_dVC.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
d_dVC.dataDelegate = self; // Data self
[self presentViewController:d_dVC animated:YES completion:nil];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark -
#pragma mark Data call back delegate
//
-(void)willDismissModalView:(id)sender
{
Delegate_DataViewController *d_dVC = (Delegate_DataViewController *)sender;
self.data_label.text = d_dVC.tf.text; // self
}
마지막으로 DelegateDataViewController 클래스:
- (void)viewDidLoad
{
[super viewDidLoad];
// ,
self.tf = [[UITextField alloc] initWithFrame:CGRectMake(100.0, 200.0, 120.0, 100.0)];
self.tf.placeholder = @"Input some text";
[self.view addSubview:self.tf];
// Dismiss ,dismiss
self.dismiss_button = [UIButton buttonWithType:UIButtonTypeSystem];
self.dismiss_button.frame = CGRectMake(130.0, 320.0, 60.0, 40.0);
[self.dismiss_button setTitle:@"Dismiss" forState:UIControlStateNormal];
[self.dismiss_button addTarget:self action:@selector(modalBack:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.dismiss_button];
}
// Master ,
-(void)modalBack:(id)sender
{
[self dismissViewControllerAnimated:YES completion:^{
[self.dataDelegate willDismissModalView:self]; //
}];
}
이것은 비교적 특별하다. 위탁의 호출과 실현을 분리한다.이 예제에서는 Data View Controller에서 위임 메서드를 호출합니다.
// Master ,
-(void)modalBack:(id)sender
{
[self dismissViewControllerAnimated:YES completion:^{
[self.dataDelegate willDismissModalView:self]; //
}];
}
구현은 Master View Controller에서 수행됩니다.
//
-(void)willDismissModalView:(id)sender
{
Delegate_DataViewController *d_dVC = (Delegate_DataViewController *)sender;
self.data_label.text = d_dVC.tf.text; // self
}
의뢰를self로 설정해야 합니다.데모가 업로드되었으니 다운로드해 보십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
v-for문 다시연습3일 쉬고 왔더니 피곤 하네여ㅎㅎ (오늘만 일하면 내일 또 쉰다.!!!!!!) 오늘은 v-for문 공부한거 조금 적어보려합니다. 바로 적어 보겠습니다. 보시면 간단한 예제 입니다. id 뭐고 name이 뭔지 알수 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.