在StoryBoard中我有一个场景包含一些TextFields,按钮和一个UITableView。在头文件中声明了UITableView的一个实例,但是当我尝试访问方法'cellForRowAtIndexPath'时,我收到以下错误
this class is not key value coding-compliant for the key tableView.
我用Google搜索了这个错误,有些结果表明它是关于将DataSource和Delegate属性链接到ViewController,但我仍然收到相同的错误
请告诉我如何解决此错误。
码-1 :
-(UITableViewCell *) tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"cellForRowAtIndexPath");
NSString *cellIdentifier = @"cellId";
UITableViewCell *cell = [tableView1
dequeueReusableCellWithIdentifier:cellIdentifier
forIndexPath:indexPath];
if (cell == nil) {
cell = [[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:cellIdentifier];
}
//[cell.textLabel setText: [dataArray
objectAtIndex:indexPath.row]];
if (textFieldRowNameAsString != nil)
cell.textLabel.text = textFieldRowNameAsString;
return cell;
}
码-2 :
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UITableViewDelegate,
UITableViewDataSource>
{
NSString *textFieldRowNameAsString;
UITableView *tableView1;
UITableViewCell *prototypeCell;
UIView *contentView;
}
图片-1 :
答案 0 :(得分:1)
按照以下步骤操作:这可能会解决您的问题。
删除故事板中tableView1的连接,然后重新连接到正确的变量名称并尝试。仔细检查标识符字符串文本它应该完全相同。
答案 1 :(得分:1)
如果您
,可以避免错误 始终使用所有表格视图数据源和委托方法中传递的tableView
实例。
您无需检查nil
的单元格,因为此dequeueReusable
方法始终返回有效单元格。
由于单元格被重用,因此强烈建议将所有UI元素始终设置为已定义的状态。
-(UITableViewCell *) tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellIdentifier = @"cellId";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
if (textFieldRowNameAsString != nil) {
cell.textLabel.text = textFieldRowNameAsString;
} else {
cell.textLabel.text = ""
}
return cell;
}
PS:如果你想拥有一个自定义表视图变量/属性,你必须创建一个IBOutlet
并将表视图连接到它。一个简单的财产是不够的。