chlidViewController 메서드를 사용하는 방법이 많이 있습니다. 그러나 childViewController에서 uitextfield 및 uiswitch의 값을 변경하고 설정하는 방법을 찾지 못했습니다.parentViewController의 childViewController에서 UITextField 및 UISwitch 값을 변경하는 방법
ChildViewController.h :
@protocol VVInformationTableViewControllerDelegate;
@interface VVInformationTableViewController : UITableViewController
@property (weak, nonatomic) id<VVInformationTableViewControllerDelegate> delegate;
@property (weak, nonatomic) IBOutlet UITextField *nameTextField;
@property (weak, nonatomic) IBOutlet UITextField *surnameTextField;
@property (weak, nonatomic) IBOutlet UITextField *emailTextField;
@property (weak, nonatomic) IBOutlet UITextField *locationTextField;
@property (weak, nonatomic) IBOutlet UITextField *headlineTextField;
@property (weak, nonatomic) IBOutlet UITextField *positionTextField;
@property (weak, nonatomic) IBOutlet UITextField *companyTextField;
@property (weak, nonatomic) IBOutlet UISwitch *messagesEnable;
@end
ParentViewControler.m : 도움을
- (void)viewDidLoad
{
self.currentAttendee = [VVAPIClient sharedClient].currentUser;
NSParameterAssert(self.currentAttendee);
[super viewDidLoad];
[self.navigationController setNavigationBarHidden:YES];
self.infoTableController = [[VVInformationTableViewController alloc] initWithNibName:@"InformationTableViewController" bundle:nil];
[self addChildViewController:self.infoTableController];
}
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
self.infoTableController.nameTextField.text = self.currentAttendee.firstName?:@"";
self.infoTableController.surnameTextField.text = self.currentAttendee.lastName?:@"";
self.infoTableController.emailTextField.text = self.currentAttendee.email?:@"";
self.infoTableController.locationTextField.text = self.currentAttendee.location?:@"";
self.infoTableController.headlineTextField.text = self.currentAttendee.headline?:@"";
self.infoTableController.positionTextField.text = self.currentAttendee.position?:@"";
self.infoTableController.companyTextField.text = self.currentAttendee.company?:@"";
}
-(void)viewDidLayoutSubviews{
self.infoTableController.messagesEnable.on = NO;
self.infoTableController.nameTextField.tag = 0;
self.infoTableController.surnameTextField.tag = 1;
self.infoTableController.emailTextField.tag = 2;
self.infoTableController.locationTextField.tag = 3;
self.infoTableController.headlineTextField.tag = 5;
self.infoTableController.positionTextField.tag = 6;
self.infoTableController.companyTextField.tag = 7;
}
감사합니다.
일반적으로 말해서 하나의보기 컨트롤러가 다른보기 컨트롤러에서 속성을 변경하는 것을 다시 고려해야합니다. 원하는 객체 간 분리 기능을 위반합니다. 이 경우'currentAttendee'를 속성으로'VVInformationTableViewController'에 전달하는 것이 좋을 것입니다. 그리고 자식에게 자신의 일을시키는 것이 좋습니다. –