访问appDelegate中定义的对象

时间:2011-07-06 07:40:35

标签: objective-c ipad

我正在重新编码我执行的splitview控制器应用程序,因此表视图并不总是在旁边。 我有我的appDelegate,一个ViewController,表视图和另一个名为DetailViewController的视图。 我在appDelegate.h文件中声明了DetailViewController的一个实例

@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

在viewController.m中我正在创建dvc的实际实例

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

但是当我尝试在表视图中访问dvc实例时,我正在处理一个新对象,数据不会持久存在或在记录时显示为null。所有内容都编译并运行,但在表视图中访问dvc的代码不起作用。

在viewController和table视图(h和m文件)中,我将dvc包含为@property和@synthesize。那是我做错了吗?但当我把它拿出来时,我会收到警告说dvc是未声明的。

我感觉我正在处理两个dvc实例,但我不知道如何修复它。任何提示?

谢谢, 史蒂夫

1 个答案:

答案 0 :(得分:1)

实际上,在你的viewController中,你正在分配一个新的dvc实例,这意味着在一个实例中完成的任何内容都不会在另一个中完成。

在yourSalesMate3ViewController中创建一个attacher方法,并从app delegate中调用它。像这样:

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];

现在他们都会引用相同的,并且任何一个类都可以操纵它。