この例では、モーダルとして表示されている 2 番目のビュー コントローラーがあります。
2 番目のビュー コントローラーの h ファイルで、次のようにします。
@protocol SecondViewControllerDelegate <NSObject>
- (void)addItemViewController:(id)controller didFinishEnteringItem:(NSString *)item;
@end
@interface SecondPageViewController : UIViewController <UITextViewDelegate>
{
NSString *previouslyTypedInformation;
}
@property (weak, nonatomic) IBOutlet UITextView *textView;
@property (nonatomic) NSString *previouslyTypedInformation;
@property (nonatomic, weak) id <SecondViewControllerDelegate> delegate;
2番目のView Controllers mファイルで、プロパティを合成して追加してから、これを追加してください:
- (IBAction)done:(id)sender
{
NSString *itemToPassBack = self.textView.text;
NSLog(@"returning: %@",itemToPassBack);
[self.delegate addItemViewController:self didFinishEnteringItem:itemToPassBack];
//dismiss modal view controller here
}
次に、最初のView Controllerのhファイルで、デリゲートとして設定します:
@interface FirstPageViewController: UIViewController <SecondViewControllerDelegate>
@property (nonatomic) NSString *returnedItem;
次に、最初のビュー コントローラーの m ファイルで合成し、メソッドを追加します。
- (void)addItemViewController:(SecondPageViewController *)controller didFinishEnteringItem: (NSString *)item
{
//using delegate method, get data back from second page view controller and set it to property declared in here
NSLog(@"This was returned from secondPageViewController: %@",item);
self.returnedItem=item;
//add item to array here and call reload
}
これで、返されたもののテキストができました。最初のView ControllerのviewDidLoadで配列に文字列を追加して呼び出すことができます
[self.tableView reloadData];
そしてそれはうまくいくはずです。