5

これはApplesアプリケーション全体で使用されているようです。新しいレコードの作成は、継続するために保存または取り消しが必要なモーダルビューを介して行われ、レコードの編集はナビゲーションスタックにプッシュされたビューを使用して行われます。私はモーダルでもプッシュでも同じ詳細ViewControllerを使用する必要がありますか?

基本的に私のViewControllerを 'add'と 'edit'に複製するのは正しいとは思われませんが、プッシュ型とモーダルViewControllerの動作にはいくつかの違いがあります。

両方の拠点をカバーできるように、どうすればよいですか?

-

違いがあります。

スタックにプッシュすると、navBarがビューの上部に表示され、キャンセル/保存ボタンを含むように設定できます。これをモーダルに提示すると、そうではないので、インターフェイスを複製するために、ツールバーを個別に作成し、代わりに閉じる/保存ボタンを追加する必要があります。

モーダルビューを却下するとき、我々は自己[self dismissModalViewControllerAnimated:YES];

+1

押しの間、「物事が複雑」されているどのように正確にモーダルを提示する? –

+0

編集された質問詳細 – trapper

+3

私は、View Controllerがそれを解消する準備ができていることを示すプロトコルを許可するプロトコル(trapperViewDismisser)を定義することでそれにアプローチします。 次に、trapperViewDismisserに準拠し、delegateをselfに設定します。 VCを表示しているクラス(既に違いを知っているクラス)に差分を移動します。 – Thompsonian

答えて

0

にメッセージを送信し、我々はナビゲーションコントローラ[self.navigationController popViewControllerAnimated:YES];にメッセージを送るプッシュビューを却下したときは、InterfaceBuilderでUIToolbarを追加し、ただのviewDidLoadでそれを隠すことができself.navigationControllerがnilでない場合あなたのViewControllerがnavigationcontrolの一部である場合は短絡します

- (void)didCancel { 
    [self.navigationController popViewControllerAnimated:YES] || [self dismissModalViewControllerAnimated:YES]; 
} 

これ、それ以外dismissModalViewControllerAnimatedを使用します。

は却下については、次のようなものを持つことができます。

キャンセルボタンの場合にも有効です。 、あなたが置くことができ、その後、デリゲートの実装では

- (void)didSave { 
    // do your saving juju here 
    if([self.delegate respondsToSelector:@selector(viewController:didSave:]) { 
     [self.delegate viewController:self didSave:whatJustGotSaved]; 
    } 
    [self.navigationController popViewControllerAnimated:YES]; // noop if currently modal 
} 

:あなたの保存ボタンの場合は、のようなデリゲートメソッドのいくつかの並べ替えを呼び出すのに便利です

- (void)viewController:(UIViewController*)viewController didSave:(NSObject*)whatJustGotSaved { 
    // do stuff with parameters 
    [self.modalViewController dismissModalViewControllerAnimated:YES]; // noop if not modal 
} 
関連する問題