2012-04-20 8 views
1

クラスのインスタンスとクラスのインスタンスを別のクラスに渡す方法を学びましたが、他の方法でそれを行う方法をまだ理解していません。他のコントローラのインスタンスクラスを取得する

例:

私たちは、このようsomeviewcontrollerするrootViewControllerに、我々はプレイリストのインスタンスを渡すdidSelectRowAtIndexPathであると言うことができます:

SomeViewController *someViewController = [[SomeViewController alloc] initWithNibName:nil bundle:nil]; 

playlist = [arr objectAtIndex:indexPath.row]; 
someViewController.playlist = playlist; 

さて、これは前方クラスのインスタンスを渡すために完璧に動作し、代わりに、SomeViewControllerにImと言って、rootViewControllerプレイリストが必要です。

同様の手法を使用してこれを達成するにはどうすればよいですか?助けてくれてありがとう!

+0

someViewControllerプレイリストをrootViewControllerに渡すか、someViewControllerからrootViewControllerプレイリストにアクセスしますか? – TompaLompa

+0

@TompaLompaこの例では、それをsomeviewcontrollerに渡します。私は代わりにsomeviewcontrollersプレイリストにアクセスしたいと思う。 –

+2

Steve MoserのようにsomeViewControllerのデリゲートを実装します。そして、rootViewControllerにプロトコルを実装させます – TompaLompa

答えて

1

あなたは委任パターンをチェックアウトする必要があります:https://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/Delegation.html

はまた、AppleのCoreDataRecipesサンプルコードをチェックアウト: http://developer.apple.com/library/ios/#samplecode/iPhoneCoreDataRecipes/Listings/ReadMe_txt.html

あなたはRecipeListTableViewControllerの時にそのようRecipeAddViewControllerの代理人であることをサンプルコードで見ることができますRecipeAddViewControllerが完了しました。RecipeListViewerはRecipeDetailViewControllerにレシピを表示できます。

デリゲートは、デリゲートへの参照がウィークリンクであるため、デリゲートを保持しないため、オブジェクトグラフにも役立ちます。したがって、委譲パターンを使用することによって、保持サイクルを作成せず、ARCがメモリ管理を担当することを保証します。

関連する問題