私のコメントを詳しく説明します。これは、ラベルを更新するための委譲メソッドを実装する方法です。親ビューコントローラのヘッダで
:
#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];
}
あなたがトップに委任方法を参照してください。
モーダルビューコントローラは、このような委任プロトコルを含むことになるのヘッダ:
@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
モーダルビューコントローラはこれと同様の方法で含むことになるの実装:
/* 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];
}
を保存ボタンが押され、デリゲートが通知され、テキストビューのテキストがデリゲーションメソッドによって送信されます。
I委任メソッドを作成します。 「保存」ボタンを押すと、モーダルが解除され、委譲メソッドが呼び出されます。親ビューには、この委譲メソッドが実装されています。呼び出されると、ラベルが更新されます。 – simonbs