我已经阅读过使用下划线修复编译器警告,说“本地声明隐藏实例变量”,但我无法实现修复。我读过的解决方案说在我的.h文件中使用下划线,在我的.m文件中使用@synthesize部分。但是,我没有合成我的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;
}
答案 0 :(得分:6)
你有一个名为tableView的outlet / property,你的委托方法也包含tableView。
所以你需要改变它们中的任何一个。通常,您将委托和数据源的参数名称更改为
- (NSInteger)tableView:(UITableView *)aTableView
numberOfRowsInSection:(NSInteger)section {
答案 1 :(得分:3)
更改:
IBOutlet UITableView *tableView;
致:
IBOutlet UITableView *tableView1;
也可以在.m文件中进行相同的必要更改。此警告即将发生,因为在下面的委托方法中:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
UITableView
的引用名称为tableView
,您的名称相同。此变量的范围是函数级别,其中变量的范围在.h中声明为类级别。
答案 2 :(得分:0)
不要使用相同的名称:IBOutlet UITableView * tableView;使用tableview或table_View
答案 3 :(得分:0)
我也花了很多时间在这个问题上。最后我可以解决这个问题。 问题是我们应该照顾我们创造的网点。如果你更改出口名称,那么你必须在改变后正确连接它们。在经过多次努力之后,我可以完成这个问题,希望它能帮助别人.... 例如,如果您有一个名为tableView的outlet / property,并且您的委托方法也包含tableView。
所以你需要改变它们中的任何一个。通常,您将更改委托和数据源的参数名称 变化:
IBOutlet UITableView *tableView;
致:
IBOutlet UITableView *tableView1;
有关详细信息,请访问此链接 - &gt; Local Declaration Hides Instance Variable - tableView Not Synthesized