2012-04-20 40 views
1

我已經學會了如何將一個類的實例傳遞給另一個類,但是我還沒有理解如何以另一種方式做到這一點。獲取另一個控制器實例類

例子:

比方說,我們是在RootViewController的和我們通過播放列表的實例didSelectRowAtIndexPath方法來someviewcontroller這樣的:

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 2012-04-20 16:49:47

+0

@TompaLompa在這個例子中,我把它傳遞給someviewcontroller。我反而想要訪問某些控制器播放列表。 – 2012-04-20 17:16:21

+2

我會爲像Steve Moser建議的someViewController實現一個委託。然後讓rootViewController實現該協議 – TompaLompa 2012-04-20 17:37:53

回答

1

你應該檢查出的委託模式:https://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/Delegation.html

還檢查了蘋果公司的CoreDataRecipes示例代碼: http://developer.apple.com/library/ios/#samplecode/iPhoneCoreDataRecipes/Listings/ReadMe_txt.html

您可以在示例代碼的RecipeListTableViewController是RecipeAddViewController的代表看到這樣當RecipeAddViewController完成RecipeListTableViewController可以在RecipeDetailViewController中顯示配方。

委派也有助於您的對象圖,因爲對委託的引用是一個薄弱的環節,這意味着它不會保留你的委託。因此,通過使用委託模式,確保您不會創建任何保留週期,ARC會爲您負責內存管理。

相關問題