本地声明隐藏实例变量 - tableview不合成
我已阅读关于使用下划线来修复编译器警告,说“本地声明隐藏实例变量”,但我一直无法实现修复。我已阅读的解决方案说,在我的.h文件中使用下划线,并在我的.m文件中使用@synthesize部分。但是,我不合成我的tableView。请参考下面我的头文件:本地声明隐藏实例变量 - tableview不合成
.h文件中
@interface ListViewController : GAITrackedViewController <UISearchDisplayDelegate,
UISearchBarDelegate, UITableViewDataSource, UITableViewDelegate> {
IBOutlet UITableView *tableView;
}
.m文件
//SYNTHESIZE
@synthesize listItems, filteredListItems, savedSearchTerm, savedScopeButtonIndex,
searchWasActive, mapView, loadingImageView, loadingActivity;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
//FIRST WARNING for tableView HERE
if (tableView == self.searchDisplayController.searchResultsTableView){
return [self.filteredListItems count];
}
else{
return [self.listItems count];
}
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
//SECOND WARNING for tableView HERE
[tableView setRowHeight: 60.00];
return 1;
}
变化:
IBOutlet UITableView *tableView;
要:
IBOutlet UITableView *tableView1;
也对.m文件进行相同的必需更改。这个警告是因为即将在下面的委托方法:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
还有就是UITableView
名称为tableView
参考,你给了相同的名称。这个变量的范围是函数级别,因为你的变量的范围在.h中声明是类级别。
你有一个名为tableView的outlet/property,你的委托方法也包含tableView。
所以你需要改变其中任何一个。通常你去改变代理和数据源的参数名称为
- (NSInteger)tableView:(UITableView *)aTableView
numberOfRowsInSection:(NSInteger)section {
不要使用相同的名称:IBOutlet UITableView * tableView;使用tableview或table_View
我也花了很多时间在这个问题上。最后我可以解决这个问题。 事情是我们应该照顾我们创造的网点。如果你改变了网点名称,那么你必须在改变后正确连接它们。在我的情况下,经过很多努力,我可以完成这个问题,希望它可以帮助其他人...... 例如,如果你有一个名为tableView的outlet/property和你的委托方法还包含tableView。
所以你需要改变其中任何一个。通常你去改变委托和数据源的参数名称作为 变化:
IBOutlet UITableView *tableView;
要:
IBOutlet UITableView *tableView1;
欲了解更多信息,请访问此链接 - >Local Declaration Hides Instance Variable - tableView Not Synthesized
改变出口名称可能会导致你遇到了某种麻烦,就好像你是从其他一些类别中引用它一样。 – 2013-03-02 06:56:24