2012-03-16 20 views
1

私のアプリケーションでは、2つのView Controller、つまりUIViewControllerとUITableViewControllerがあります。 今、私のTableViewControllerの実装では、UIViewController(プロパティ配列)からいくつかのデータを取得する必要があります。それは合成された配列なので、私が実際にやっていることは、UITableViewControllerの実装では、UIViewController、配列のインスタンスを作成して、配列を[myUIViewController getTheArray]に設定していることです。私はそれがこのように動作しないことを知っています、それはただ無名を取得していますが、私のVCでは実際にはデータがいっぱいです。私はこの時点で立ち往生していますが、私はperformSegueWithIdentifierメソッドで試してみましたが、これらのビューはセグによって直接接続されていません。それらはTab Bar Viewに埋め込まれており、私のViewControllerは私のTableViewControllerと全く関係ありません。 これを正しく行うにはどうすればよいですか?おかげさまで 今 別のViewControllerでViewControllerのインスタンスを識別する

@interface classA : UIViewController 

@property (strong, nonatomic) Playlist* playlist; 

-(Playlist*) getTheCurrentPlaylist; 
@end 

@implementation classA 

@synthesize playlist = _playlist; 
// add data to _playlist 
-(Playlist*) getTheCurrentPlaylist{ 
return _playlist; 
} 
@end 

は、ClassBの

@interface classB : UITableViewController 
@property (strong ,nonatomic) Playlist* playlistTab; 
@end 

@implementation classB 
@synthesize playlistTab = _playlistTab; 

-(void) viewDidLoad{ 
[super viewDidLoad]; 
classA *cla = [[classA alloc] init]; 
// what has to be done here? 
_playlistTab = [cla getTheCurrentPlaylist]; 
} 

に私は、これは、それが明確に願っています。

+0

私はあなたが何を言おうとしたのか分かりました。小さなコードスニペットで、もっと明確にしようとしますか? –

+0

コードはメインポストにあります。 – nemesis

+0

これをデバッグするために何をしましたか?ブレークポイントを設定し、メソッドが呼び出されていることを確認しましたか?ブレークポイントが呼び出されたときに、戻り値がゼロでないことを確認しましたか? – Jim

答えて

2

私はあなたが何を意味するのか分かりませんので、私が何か誤解した場合はコメントをしてください。また、私は自分でiOS開発をかなり新しくしています。

だから、UIViewControllerとUITableViewControllerを持つタブバーコントローラがあります。あなたのUIViewControllerの実装にはいくつかのデータがあり、UITableViewControllerはそのデータにアクセスする必要があります。あなたはできませんちょうど新しいclassAを作成します。作成してタブバーに入れるclassAのインスタンスを参照する必要があります。あなたが行うことができます

一つは、AppDelegateがのUIViewControllerを意識することです(つまり、AppDelegateはのUIViewControllerを参照する性質を持っているそして、あなたのUITableViewControllerで、あなたはのUIViewControllerにアクセスするには、このような何かを行うことができます。

MyAppDelegate *appDel = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 
appDelegate.myUIViewController.playlist; 

Core Dataのようなものを使用している可能性がありますので、おそらくCore Dataのようなものを使用するのはあまりにも複雑かもしれませんが、ClassAのインスタンスにはsingletonの値を設定し、 UIViewControllerによって書き込まれ、テーブルビューから読み込まれるAppDelegateのプロパティを作成してください。

+0

返信いただきありがとうございますが、エラーが発生しました。 "プロパティ 'myUIViewController'がタイプ 'MyAppDelegate *'のオブジェクトに見つかりません。 – nemesis

+0

さて、あなたはそのコードをコピーするだけでは... .Ok、a)あなたはappdelでplaylistというプロパティを作成します。 b)classAから上記のコードを使用してappDelを取得し、次にプレイリストが保存/変更されたときにプレイリストを設定します。 c)最後にclassbから、上のコードを再度使用してappDelを取得し、プレイリストから読み込みます。 –

+0

あなたは命の恩人です!それは時計のように働き始めた!私はちょうどappDelegate.playlist(UIViewControllerなし)を使用しなければなりませんでした。とても感謝しています! – nemesis

関連する問題