0

最新の SDK を使用して iOS 5.0 以降のアプリを開発しています。

ビュー( VC1 )を持つビューコントローラーがあります。このビュー内には、カスタムの子UIView( view2 ) があります。

この子ビューから別のビュー コントローラー ( VC2 ) を開き、 VC2をVC1の子コントローラーとして追加したいのですが、その方法がわかりません。

今、view2には次のメソッドがあります:

- (void) handleLongClick:(UILongPressGestureRecognizer *)gestureRecognizer
{
    SettingsDialogViewController* dialog = [[SettingsDialogViewController alloc] initWithNibName:@"GaugeSettingsDialogViewController" bundle:nil];

    dialog.view.frame = self.superview.superview.bounds;
    [self.superview.superview addSubview:dialog.view];
}

しかし、これを行うdialogと解放され、インスタンス変数を追加したくありません。インスタンス変数は常にメモリにあるためです。

VC1 の子コントローラーとして VC2 を追加するにはどうすればよいですか?

4

1 に答える 1

0

しかし、これを行うと、ダイアログが解放され、毎回メモリにあるため、インスタンス変数を追加したくありません。

そうしない場合でも、保持カウントが 1 つ少ないメモリ内に保持されます。ただし、表示するためだけにメンバー変数として持つ必要はありません。

ビューから別のビューに移行するには、さまざまな方法があります。両方のビューにビュー コントローラーがあるようです。そこで、最も簡単な(一般的な)方法を紹介します。

  • ナビゲーションスタックにプッシュ

ビューにナビゲーション コントローラーがある場合は、2 番目のコントローラーをナビゲーション スタックにプッシュできます。VC1を見せながら

UINavigationController *navigationller = [[UINavigationController alloc] initWithRootViewController:VC1];
// show VC1

次に、VC2を次のように表示します

- (void) handleLongClick:(UILongPressGestureRecognizer *)gestureRecognizer
{
SettingsDialogViewController* dialog = [[SettingsDialogViewController alloc] initWithNibName:@"GaugeSettingsDialogViewController" bundle:nil];

[self.navigationController pushViewController:dialog animated:YES];
}

ナビゲーション バーに戻るボタンが自動的に表示されます。

  • モーダルとして表示

そのために、ナビゲーションコントローラーは必要ありません。

- (void) handleLongClick:(UILongPressGestureRecognizer *)gestureRecognizer
{
SettingsDialogViewController* dialog = [[SettingsDialogViewController alloc] initWithNibName:@"GaugeSettingsDialogViewController" bundle:nil];

[self presentViewController:dialog animated:YES completion:nil];
}

もちろん、必要に応じて、もう一度閉じるアクションを追加する必要があります。ナビゲーション コントローラーでは、ナビゲーション バーに戻るボタンが自動的に表示されます。両方を試して、必要なものを決定してください。

于 2013-04-10T07:07:33.920 に答える