내 의견에 대해 자세히 설명합니다. 이것은 레이블을 업데이트하는 위임 메서드를 구현하는 방법입니다. 부모 뷰 컨트롤러의 헤더에서
:
#import "ModalViewController.h"
@interface ViewController : UIViewController <ModalViewControllerDelegate>
/* This presents the modal view controller */
- (IBAction)buttonModalPressed:(id)sender;
@end
그리고 구현은 :
여기
/* Modal view controller did save */
- (void)modalViewControllerDidSave:(ModalViewController *)viewController withText:(NSString *)text
{
NSLog(@"Update label: %@", text);
}
/* Prepare for segue */
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"modalSegue"])
{
ModalViewController *mvc = (ModalViewController *) segue.destinationViewController;
mvc.delegate = self;
}
}
/* Present modal view */
- (IBAction)buttonModalPressed:(id)sender
{
[self performSegueWithIdentifier:@"modalSegue" sender:self];
}
당신은 상단의 위임 방법을 참조하십시오.
과 같이 위임 프로토콜 포함됩니다 모달 뷰 컨트롤러의 헤더 :
/* Save button was pressed */
- (IBAction)buttonSavePressed:(id)sender
{
if ([self.delegate respondsToSelector:@selector(modalViewControllerDidSave:withText:)])
[self.delegate modalViewControllerDidSave:self withText:@"Some text"];
[self dismissModalViewControllerAnimated:YES];
}
경우 :
이
@protocol ModalViewControllerDelegate;
@interface ModalViewController : UIViewController
@property (nonatomic, weak) id <ModalViewControllerDelegate> delegate;
- (IBAction)buttonSavePressed:(id)sender;
@end
@protocol ModalViewControllerDelegate <NSObject>
- (void)modalViewControllerDidSave:(ModalViewController *)viewController withText:(NSString *)text;
@end
모달 뷰 컨트롤러의 구현은, 이것과 같은 방법을 포함하는 것을 저장 버튼을 누르면 대리인에게 통보되고 텍스트보기의 텍스트는 위임 메소드를 통해 전송됩니다.
I을 위임 방법을 만들 것입니다. "저장"버튼을 누르면 모달이 해제되고 위임 메서드가 호출됩니다. 부모 뷰에는이 위임 메서드가 구현되어 있으며이를 호출하면 레이블이 새로 고쳐집니다. – simonbs