1

以下は私が実装したいものです:

  1. 私のアプリのメイン画面は UITableView です。テーブル ビューの各行はカテゴリです。行の詳細開示ボタンをクリックすると、カテゴリの詳細ビューでこのカテゴリの下に多数の項目が表示されます。

  2. メイン画面で、ナビゲーション バーの [+] ボタンをクリックして、新しいカテゴリを作成します。(新しいカテゴリは、テーブル ビューの新しい行になります)。次に、アプリは「カテゴリの追加」ビューに移動します。(presentModalViewControllerを使用しました)

  3. 「カテゴリの追加」ビューで何かを設定し、「保存」ボタンをクリックして「カテゴリの追加」ビューを閉じます。(私はdismissModalViewControllerAnimatedを使用しました)

  4. 通常、[保存] ボタンをクリックすると、アプリはメイン ビューに戻り、テーブルに新しい行が表示されます。

  5. 「保存」ボタンをクリックすると、「カテゴリの追加」ビューは閉じられますが、メインビューには戻りません。代わりに、新しく作成されたカテゴリの詳細が表示されるので、このカテゴリにアイテムを追加し続けることができます。その結果は「メインビューに戻って、新しく作成した行(カテゴリ)の詳細開示ボタンをクリックした」と同じです。

  6. それを実現する方法を知っている人はいますか?ありがとう!

4

2 に答える 2

0

presentModalViewControllerとそれに対応するを使用するとdismissModalViewControllerAnimated、最初のメッセージを発行したViewControllerに戻りpresentModalViewControllerます。

代わりに、新しいカテゴリの追加を担当するView Controllerをスタックにプッシュし、完了したら、そのカテゴリのすべてのアイテムの表示を担当するViewControllerをスタックにプッシュするだけです。したがって、使用する必要があります

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
于 2009-05-31T07:19:54.087 に答える
0

これを行うには、ある画面を別の画面から少し分離します。

- カテゴリ作成モーダル ダイアログのカスタム デリゲートとプロトコルを作成します。次のような簡単なもの:

@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ために、呼び出し元が呼び出すことができる各モーダル ダイアログとプッシュされたビュー コントローラーにメソッドを配置することもできます。このようにして、一貫した方法でアクセスし、ユーザーがそれを完了したことを通知する一貫した方法があります。

于 2009-05-31T19:05:07.390 に答える