我正在尝试访问一个变量,该变量创建了我在视图控制器中的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方法引用我的视图控制器,但我无法弄清楚如何。
答案 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也是另一个类的属性吗?那个类的实例变量呢?