2013-04-06 17 views
6

iOS開発に比較的新しいです。私は最初にAndroid向けのアプリを開発し、現在はiOSに移植しています。私が理解できない1つのことは、ViewControllerを「遠ざける」方法を作ることです。私はAndroidのfinish()メソッドに慣れています。この方法では、現在のアクティビティが終了し、現在の画面を開く前に開いていた前の画面がユーザに表示されます。iOS対応のAndroidフィニッシュ()

私が達成しようとしているのは、レコードが保存された後に私の「作成」画面が消えることです。 Androidの世界では、私はちょうどfinish()メソッドを呼び出すと、それは世話をするだろう。 iOSと同等のものは何ですか?

iOSアプリケーションで次のコードを試してみました。ビューがアニメーション化されることを期待しています。

[self.navigationController popToRootViewControllerAnimated:YES]; 

編集: ビューは次のとおりです。

controllersは、そのように定義されて
SettingsViewController *vc = [[SettingsViewController alloc] initWithNibName:@"SettingsView"]; 
controllers = [NSArray arrayWithObject:vc]; 
self.sideMenu.navigationController.viewControllers = controllers; 
[self.sideMenu setMenuState:MFSideMenuStateClosed]; 

NSArray *controllers = nil; 
+0

ビューコントローラはどのように画面に表示されますか?削除する唯一の方法は、表示方法を元に戻すことです。 – MishieMoo

+0

あなたはSettingsViewControllerを離れるようにしようとしていますか?どこに行きたいですか?これは、表示したコードからのスタック内の唯一のView Controllerです。 –

+0

私はサイドメニューで自分のアプリを開発しています。アプリが読み込まれると、1つの画面が表示されます。ユーザーは、サイドメニューを開いてそこからメニュー項目を選択するオプションがあります。ユーザがサイドメニューからアイテムを選択すると、上記の私の編集のコードが実行されます。 – acedanger

答えて

14

どのようにこのビューコントローラを提示したのですか?

presentViewController:animated:completion:を使用しましたか?

[self dismissViewControllerAnimated: YES]; 

あなたがpushViewController:animated:を使用している場合は、モーダルビューについて話されていません。もしそうなら、あなたはこのような何かをしたいです。スタックにプッシュした通常のViewControllerについて話しています。私たちは、Androidでfinish()メソッドを呼び出したとき、私たちは、finish()[self dismissViewControllerAnimated:YES]は、機能性の面で似ていますが、彼らはまったく同じではありませんけれども

[self.navigationController popViewControllerAnimated: YES]; 
+0

私は私の質問に現在のビューコントローラを提示するために使用したコードを追加しました。 – acedanger

1

:これを「元に戻す」するには、ビューコントローラをポップする必要がありますプログラムによってメモリから完全にアクティビティを破壊するようにAndroidシステムに指示し、onDestroy()アクティビティライフサイクルコールバックをオーバーライドしてログを追加すると、finish()が呼び出されるとログが表示されます。 onDestroy()は、システムにリソースが必要なときに呼び出され、アクティビティを終了することによってメモリを解放します。しかし

[self dismissViewControllerAnimated: YES]; 

、メモリからonDestroy(等価コールバックメソッドをのUIViewControllerインスタンスを削除しない)IOSには、メッセージdismissViewControllerで呼び出されていないviewDidUnload()です。私はIOSシステムは、システムがリソースを必要とするときにUIViewControllerインスタンスのためのメモリを解放することができると思うが、我々はそれをプログラム的に行うことはできない。

関連する問題