UIApplication sharedApplication Справка? - PullRequest
1 голос
/ 16 августа 2011

Я пытаюсь получить доступ к переменной, которая создает контроллер навигации, который я определил в приложении «Делегат», в контроллере представления (я создаю приложение панели вкладок с .plist для каждой вкладки, как детализированное приложение).).Я пытаюсь избавиться от ошибки, которая говорит "запрос для члена" indNavControl "в чем-то, что не является структурой или объединением. Может ли кто-нибудь мне помочь?

Код:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

A37dgAppDelegate *AppDelegate = (A37dgAppDelegate *)[[UIApplication sharedApplication] delegate];
self.indNavControl = [AppDelegate.indNavControl];

//Get the dictionary of the selected data source.
NSDictionary *dictionary = [self.tableDataSource objectAtIndex:indexPath.row];

//Get the children of the present item.
NSArray *Children = [dictionary objectForKey:@"Children"];


if([Children count] == 0) {

    DetailViewController *dvController = [[DetailViewController alloc] initWithNibName:@"DetailView" bundle:[NSBundle mainBundle]];

    A37dgAppDelegate *AppDelegate = (A37dgAppDelegate *)[[UIApplication sharedApplication] delegate]; 
    [AppDelegate.indNavControll push indNavControl];
    [self.indNavControl pushViewController:dvController animated:YES];
    [dvController release];
}
else {

    //Prepare to tableview.
    IndustriesViewController *indViewControl = [[IndustriesViewController alloc] initWithNibName:@"IndustryView" bundle:[NSBundle mainBundle]];

    //Increment the Current View
    indViewControl.CurrentLevel += 1;

    //Set the title;
    indViewControl.CurrentTitle = [dictionary objectForKey:@"Title"];

    //Push the new table view on the stack
    A37dgAppDelegate *AppDelegate = (A37dgAppDelegate *)[[UIApplication sharedApplication] delegate];
    [self.indNavControl pushViewController:indViewControl animated:YES];

    indViewControl.tableDataSource = Children;

    [indViewControl release];
}

}

Действительно, все, что я хочу сделать, - это сослаться на мой контроллер представления, используя метод sharedApplication UIApplication, но я не могу понять, как.

Ответы [ 3 ]

0 голосов
/ 16 августа 2011

Вы объявили 'indNavControl' в своем AppDelegate как свойство?В вашем файле AppDelegate.h должно быть

@property (nonatomic, retain) NSObject *indNavController;

или что-то подобное.Проверьте, есть ли у вас это.Если нет, добавьте это.

РЕДАКТИРОВАТЬ: Кроме того, поскольку в

[AppDelegate.indNavControl];

нет метода ObjC, вы должны избавиться от [и] в этой строке.

EDIT2: у вас есть несколько экземпляров делегата приложения: в начале и внутри оператора if.И их имена совпадают.Вам следует удалить

A37dgAppDelegate *AppDelegate = ...

внутри оператора if, поскольку переменная с именем AppDelegate уже существует.

0 голосов
/ 16 августа 2011

Какая линия?У вас есть опечатка (AppDelegate.indNavControll).

И похоже, что вы используете ужасную практику (да, я знаю, что Apple это делает) именования переменных и свойств экземпляра одинаковыми, что усложняет задачучитать вне контекста.Является ли indNavControl свойством другого класса?И переменная экземпляра этого класса тоже?

0 голосов
/ 16 августа 2011

Вы импортировали "A37dgAppDelegate.h" и "IndustriesViewController.h" здесь?

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