关于 UITable 视图的异常

Posted

技术标签:

【中文标题】关于 UITable 视图的异常【英文标题】:Exception regarding UITable view 【发布时间】:2013-04-06 09:01:17 【问题描述】:

我是 Objective C 和 ios 的新手。我在情节提要的视图控制器上嵌入了一个导航控制器。然后我在情节提要中添加了另一个视图控制器,它是根视图控制器。它有一个按钮连接到另一个视图控制器,该控制器添加了一个表视图。当我运行构建时,我收到以下异常:'NSInvalidArgumentException' 原因:'-[UIViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x686d160'。这是实现文件中的代码(仅相关方法)如果我需要提供更多代码,请告诉我:

     (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
   
    return [contacts count];
   


    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:      (NSIndexPath *)indexPath
    
    static NSString *simpleTableIdentifier = @"RecipeCell";

    UITableViewCell *cell = [tableView   dequeueReusableCellWithIdentifier:simpleTableIdentifier];

    if (cell == nil) 
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
    

    cell.textLabel.text = [contacts objectAtIndex:indexPath.row];
    return cell;

【问题讨论】:

联系人数组有值吗? 它清楚地表明您的contacts 数组有一些无效值,例如空或空。因此,请确保它不为 null 并且其中包含一些值。 您可以向 nil 对象发送消息,但不能向已释放对象发送消息。 我不知道怎么可能得到这个错误。这是说你的 UIViewController 不理解表视图委托消息 tableView:numberOfRowsInSection:。我认为您应该显示此控制器中的所有代码,包括 .h 文件中的任何属性声明。 【参考方案1】:

您正在向已解除分配的联系人变量发送“计数”消息。当您将对象分配给联系人时,请通过在其上发送保留消息来确保它拥有它,或者如果您启用了它,请使用 ARC 等效项。

【讨论】:

@Dolours 这些是数组中的值 - (void)viewDidLoad contacts = [NSArray arrayWithObjects:@"Egg Benedict", @"Mushroom Risotto", @"Full Breakfast", @"Hamburger ”,@“火腿鸡蛋三明治”,@“奶油布利”,@“白巧克力甜甜圈”,@“星巴克咖啡”,@“蔬菜咖喱”,@“鸡蛋方便面”,@“叉烧面” ,@“日本猪肉面”,@“绿茶”,@“泰国虾饼”,@“愤怒的小鸟蛋糕”,@“火腿芝士帕尼尼”,无]; [超级视图DidLoad]; 在这种情况下,将为联系人分配一个自动释放的数组实例。呼叫[联系人保留]; 出现错误:'retain' 在自动引用计数中不可用 然后将您的联系人声明为强引用或使用 [[NSArray alloc] init.......] 尝试这样做,contacts = [NSArray alloc]init];,然后像之前一样为其赋值。

以上是关于关于 UITable 视图的异常的主要内容,如果未能解决你的问题,请参考以下文章

将子视图添加到 UITable

UITable 视图界面构建器创建

UITable 视图中的单元格队列大小

UITable 视图项有时会在选择时消失(取决于屏幕大小)

视图宽度不等于单元格宽度 inseide uitable?

如何在 swift 3 中为 UITable 视图提供单元格缩进级别?