【问题标题】:Exception regarding UITable view关于 UITable 视图的异常
【发布时间】: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 文件中的任何属性声明。

标签: ios objective-c xcode4.3 uistoryboard


【解决方案1】:

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

【讨论】:

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