本地声明隐藏实例变量 - tableView未合成

时间:2013-03-02 06:50:43

标签: iphone ios objective-c xcode

我已经阅读过使用下划线修复编译器警告,说“本地声明隐藏实例变量”,但我无法实现修复。我读过的解决方案说在我的.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;

}

4 个答案:

答案 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