该类不是键值tableView的键值编码兼容

时间:2017-06-21 13:10:11

标签: ios objective-c uitableview

在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

enter image description here

2 个答案:

答案 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并将表视图连接到它。一个简单的财产是不够的。