关于 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 视图的异常的主要内容,如果未能解决你的问题,请参考以下文章