2011-07-06 4 views
1

スプリットビューコントローラのアプリを再コーディングしています。テーブルビューが必ずしも面倒ではありません。 私は自分のappDelegate、ViewController、テーブルビュー、およびDetailViewControllerという別のビューを持っています。 私はDVCappDelegateで定義されたオブジェクトへのアクセス

dvc = [[DetailViewController alloc] initWithNibName: @"DetailViewController" bundle: nil]]; 

の実際のインスタンスを作成しています。しかし、私がアクセスしようとすると、私のappDelegate.hファイルにviewController.mで

@class SalesMate2ViewController; 
@class DetailViewController; 
@class Categories; 

@interface SalesMate2AppDelegate : NSObject <UIApplicationDelegate> { 
UIWindow *window; 
SalesMate2ViewController *viewController; 
DetailViewController *dvc; 
} 

@property (nonatomic, retain) IBOutlet UIWindow *window; 
@property (nonatomic, retain) IBOutlet SalesMate2ViewController *viewController; 
@property (nonatomic, retain) DetailViewController *dvc; 
@end 

をDetailViewControllerのインスタンスを宣言していますテーブルビューのdvcインスタンスが表示されます。新しいオブジェクトを扱っています。データは保持されず、ログに記録されるとnullが表示されます。すべてがコンパイルされて実行されますが、テーブルビューでdvcにアクセスするコードは機能しません。

viewControllerとtableビュー(hとmファイル)では、dvcを@propertyとして、@synthesizeを含めています。それは私が間違っていることですか?しかし、私がそれらを取るとき、私はdvcが宣言されていないと警告を得る。

私はdvcの2つのインスタンスを扱っていると感じるが、私はそれを修正する方法を知らない。何かヒント?

おかげで、 スティーブ実際

答えて

1

は、あなたのViewControllerであなたは1で行うものは、他に持ち越さないことを意味しますDVCの新しいインスタンスを、allocingされています。

あなたのSalesMate3ViewControllerにattacherメソッドを作成し、それをアプリケーションデリゲートから呼び出します。そのような:

SalesMate2ViewController.h

-(void)attachDetailVC :(DetailViewController*) myDvc; 

SalesMate2ViewController.m

-(void)attachDetailVC :(DetailViewController*) myDvc 
{ 
    self.dvc = myDvc; 
} 

そして、あなたのSalesMate2AppDelegateからそれを呼び出すには、

self.dvc = [[DetailViewController alloc] initWithNibName: @"DetailViewController" bundle: nil]] 
[viewController attachDetailVC:self.dvc]; 

は今、彼らは両方とも同じといずれかのクラスを参照しますそれを操作することができます。

+0

完璧、よろしくお願いいたします。 – Steve

関連する問題