Доступ к объекту, определенному в appDelegate - PullRequest
1 голос
/ 06 июля 2011

Я переписываю приложение контроллера splitview, которое я сделал, чтобы табличное представление не всегда было на стороне. У меня есть appDelegate, ViewController, табличное представление и другое представление, называемое DetailViewController. Я объявляю экземпляр DetailViewController в моем файле appDelegate.h

@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 в табличном представлении, кажется, что я имею дело с новым объектом, данные не сохраняются или показывают нулевое значение при регистрации. Все компилируется и запускается, но код, обращающийся к dvc в табличном представлении, не работает.

В viewController и табличном представлении (h и m файлы) я включаю dvc как @property и @synthesize. Это то, что я делаю не так? Но когда я вынимаю их, я получаю предупреждения о том, что dvc не объявлен.

У меня такое чувство, что я имею дело с двумя экземплярами dvc, но я не знаю, как это исправить. Есть намеки?

Спасибо, Стив

1 Ответ

1 голос
/ 06 июля 2011

Действительно, в вашем viewController вы выделяете новый экземпляр dvc, что означает, что все, что делается в одном, не будет перенесено в другой.

Создайте метод атташе в yourSalesMate3ViewController и вызовите его изприложение делегат.Вот так:

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

Теперь ониоба будут ссылаться на одно и то же, и любой класс может манипулировать им

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...