UIApplication sharedApplication帮助?

时间:2011-08-15 21:22:14

标签: objective-c ios xcode

我正在尝试访问一个变量,该变量创建了我在视图控制器中的App Delegate中定义的导航控制器(我正在为每个选项卡构建一个带有.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];
}

}

真的,我想要做的就是使用UIApplication sharedApplication方法引用我的视图控制器,但我无法弄清楚如何。

3 个答案:

答案 0 :(得分:0)

您在此处导入“A37dgAppDelegate.h”和“IndustriesViewController.h”吗?

答案 1 :(得分:0)

您是否在AppDelegate中将'indNavControl'声明为属性?应该有

@property (nonatomic, retain) NSObject *indNavController;

或类似AppDelegate.h文件中的类似内容。检查一下你是否拥有它。如果没有,请添加它。

编辑:此外,由于

中没有ObjC方法
[AppDelegate.indNavControl];

你应该摆脱[和]这一行。

EDIT2:你有多个app appate实例:在开头和'if'语句里面。他们的名字是一样的。你应该删除

A37dgAppDelegate *AppDelegate = ...

在“if”语句中,因为名为“AppDelegate”的变量已经存在。

答案 2 :(得分:0)

哪条线?你有一个错字(AppDelegate.indNavControll)。

看起来你正在使用命名实例变量和属性相同的可怕做法(是的,我知道Apple这样做),这使得事情更难以脱离上下文。 indNavControl也是另一个类的属性吗?那个类的实例变量呢?