显然,我是iOS开发的新手,但我真的可以使用别人的帮助。我正在构建一个标签栏应用程序,我试图将.plists加载到向下钻取的表视图中。问题是我似乎无法正确使用此方法,因为我正在尝试将导航控制器用于其ViewController中的选项卡。我很肯定我的错误在第二行。
A37dgAppDelegate *AppDelegate = (A37dgAppDelegate *)[[UIApplication sharedApplication] delegate];
AppDelegate.indNavControl *indNavControl;
随后,我收到了一些错误。这是代码,我将指出错误的位置:
if([Children count] == 0) {
DetailViewController *dvController = [[DetailViewController alloc] initWithNibName:@"DetailView" bundle:[NSBundle mainBundle]];
[self.indNavControl pushViewController:dvController animated:YES];//Property "indNavControl" not found on object of type "IndustriesViewController"
[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
[self.indNavControl pushViewController:indViewControl animated:YES]; //Property "indNavControl" not found on object of type "IndustriesViewController"
indViewControl.tableDataSource = Children;
[indViewControl release];
}
}
为了清楚起见,我已经导入了我的App Delegate的头文件。任何帮助将不胜感激:)
答案 0 :(得分:1)
AppDelegate.indNavControl *indNavControl;
行是错误的。我想你根本不需要这条线。在推送新视图控制器时,您可以直接使用 AppDelegate.indNavControl 而不是 self.indNavControl ,
[AppDelegate.indNavControl pushViewController:...
答案 1 :(得分:0)
你的理论认为问题在第二行是正确的。
AppDelegate.indNavControl *indNavControl;
该行并没有真正做任何事情。您需要一个AppDelegate.indNavControl
所在的班级。
您有几个选择:
1)如果你想让indViewControl成为'公共'属性
* in your IndustriesViewController.h, move the declaration of indViewControl there.
@interface
{
WhateverClass *indNavControl;
}
@property (retain) WhateverClass*indNavControl;
@end
2)如果你想要一个私有财产,那么在你的.m顶部添加一个空类别,上面有ivar和property声明。
编译器抱怨的是尝试访问不存在的属性。
调用self.whateverIvar
需要@property
定义。
答案 2 :(得分:0)
首先创建appdelegate的实例,然后你可以访问,无论你在appdelegate中声明的变量是什么属性,都是合成的。没有必要创建indNavControl的单独变量。