これが私がこれをどのように行ったかの基本的な概要です。それは私にとってはうまくいきましたが、それが最善の方法であるかどうかはわかりません.他の人もきっと参加するでしょう.
「リスト ページ」(最初の UITableViewController) は、「リスト ページ」に追加するアイテムの詳細を知らせるために「ページの追加」が呼び出すデリゲートを実装します。
「リストページ」が「ページの追加」によってコールバックされると、新しいアイテムが保存され、「ページの追加」が閉じられます。
これをすべて接続するには、「リスト ページ」が「追加ページ」を作成して表示するときに、「追加ページ」self
の ivar に渡します (私は と呼びますdelegate
)。それが基本的に、2つがリンクされて通信する方法です。
デリゲート用に定義するプロトコルは次のとおりです。
@protocol AddItemViewControllerDelegate
- (void)addItemViewController:(AddItemViewController *)controller
withNewEventName:(NSString *)eventName;
@end
「リストページ」ボタンのクリックハンドラーは次のとおりです。
- (IBAction)addItem
{
AddItemViewController *controller = [[AddItemViewController alloc] initWithNibName:@"AddItemView" bundle:nil];
controller.delegate = self;
[self presentModalViewController:controller animated:YES];
[controller release];
}
「ページの追加」からのコミットコードは次のとおりです。
if ([self.delegate respondsToSelector:@selector(addItemViewController:withNewEventName:)]) {
[self.delegate addItemViewController:self withNewEventName:eventNameTextField.text];
}
最後に、「リスト ページ」でのデリゲート プロトコルの実装を次に示します。
- (void)addItemViewController:(AddItemViewController *)controller
withNewEventName:(NSString *)eventName
{
EventModel *newEvent = [[EventModel alloc] init];
newEvent.name = eventName;
[eventsList addObject:newEvent];
[newEvent release];
[self saveEvents];
[self dismissModalViewControllerAnimated:YES];
}