свойство не видно за пределами интерфейса в приложении iPhone - PullRequest
0 голосов
/ 26 июля 2010

У меня есть контроллер вида, который создает 2 контроллера вида внутри него.Внутри каждого из этих дочерних контроллеров я хотел создать свойство, которое было бы общедоступным и доступным из родительского контроллера.

Я использую следующий метод

TableViewController.h

@interface TableViewController : UITableViewController {
    NSInteger projectId;
}

@property NSInteger projectId;

TableViewController.m

@implementation TableViewController

@synthesize projectId;

...

@end

Затем я ожидал, что родительский контроллер представления сможет создать дочерний элемент и получить доступ к переменной parentId:

ParentViewController.h

#import "TableViewController.h"
@interface ParentViewController : UIViewController {
    TableViewController* tableViewController;
}

@property (nonatomic, retain) TableViewController* tableViewController;

ParentViewController.m

@implementation ParentViewController

- (void)viewDidLoad {
    self.tableViewController = [[TableViewController alloc] initWithNibName:@"TableViewController" bundle:nil];
    self.tableViewController.projectId = 100;
}

Однако свойство projectId не являетсянайден и возвращает ошибку - Запросите идентификатор 'projectId' в чем-то, что не является структурой или объединением.

Если я изменю строку

self.tableViewController.projectId = 100;

на

[self.tableViewController setProjectId:100];

Я получаю предупреждение - TableViewController может не отвечать на '-setProjectId'

Я компилирую это в предварительном просмотре 2 XCode 4, но у меня есть такая же проблема в XCode 3.2

Яочевидно пропускает что-то очевидное, но не может понять, что это такое.

Почему я не могу получить доступ к этому свойству?

Ответы [ 2 ]

0 голосов
/ 30 июля 2010

Оказывается, у меня было 2 копии файлов TableViewController. Один имел все мои изменения, другой был пуст. Сначала я создал файл в неправильном каталоге, а когда удалил его, я просто удалил его из проекта.

Как только я удалил эти поддельные файлы, все заработало нормально.

Глупый я!

0 голосов
/ 26 июля 2010

Вы #import свои .h файлы в соответствующих .m файлах?

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