これを行うには、ある画面を別の画面から少し分離します。
- カテゴリ作成モーダル ダイアログのカスタム デリゲートとプロトコルを作成します。次のような簡単なもの:
@protocol CategoryCreationProtocol
- (void) categoryAddDone:(NSString *)category;
- (void) categoryAddCancelled;
@end
...
@interface CategoryCreationDialog : UIViewController {
...
id<NSObject, CategoryCreationProtocol> categoryDelegate;
}
@property (assign) id< CategoryCreationProtocol, NSObject> categoryDelegate;
- ユーザーが [保存] ボタンをタップしたときのモーダル ダイアログで、View Controller を閉じた後、デリゲート メソッドを呼び出します。
if (categoryDelegate && [categoryDelegate
respondsToSelector:@selector(categoryAddDone:)])
[categoryDelegate categoryAddDone:newCategory];
また、Cancel
ボタンに似たもの。
- メイン コントローラーがcategoryAddDone
メソッドを実装し、それ自体をcategoryDelegate
モーダル ダイアログの に設定します。
- 実行時に、ユーザーがSave
デリゲート メソッドをタップすると、何かが発生したことがメイン ビューに通知され、適切なビューを所定の位置にプッシュしたり、適切なカテゴリにジャンプしたりすることができます。
-あなたの場合、カテゴリの作成が完了するとすぐに、メインのView Controllerに通知されるため、カテゴリ作成ダイアログを解放して、カテゴリの詳細ビューをスタックにプッシュできます。ユーザーには、モーダル ダイアログが消えて、詳細ビューにスライドするのが表示されます。
- 一般に、navcontroller のプッシュとモーダル ダイアログにデリゲート/プロトコルを使用することは、分離された再利用可能なビューを作成するための非常に便利なパターンです。このようにして、さまざまな場所から呼び出すことができます。一貫性を保つshow
ために、呼び出し元が呼び出すことができる各モーダル ダイアログとプッシュされたビュー コントローラーにメソッドを配置することもできます。このようにして、一貫した方法でアクセスし、ユーザーがそれを完了したことを通知する一貫した方法があります。