ARC语义问题'UITableView'没有可见的@interface声明选择器'cellForRowAtIndexPath:'

时间:2013-10-09 12:15:50

标签: iphone ios ios7 xcode5

我创建了一个新项目,选择Master-Detail Application,然后选择'Use Core Data' 然后建立新项目。 (XCode 5.0)这个错误: ARC语义问题'UITableView'没有可见的@interface声明选择器'cellForRowAtIndexPath:'

- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject
   atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type
  newIndexPath:(NSIndexPath *)newIndexPath
{
    UITableView *tableView = self.tableView;

    switch(type) {
        case NSFetchedResultsChangeInsert:
        [tableView insertRowsAtIndexPaths:@[newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
        break;

    case NSFetchedResultsChangeDelete:
        [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
        break;

    case NSFetchedResultsChangeUpdate:
        [self configureCell:[tableView cellForRowAtIndexPath:indexPath] atIndexPath:indexPath];
        break;

    case NSFetchedResultsChangeMove:
        [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
        [tableView insertRowsAtIndexPaths:@[newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
        break;
    }
}

错误:

 [self configureCell:[tableView cellForRowAtIndexPath:indexPath] atIndexPath:indexPath];

1 个答案:

答案 0 :(得分:1)

那是因为它是表视图数据源而不是表视图的方法。此外,UITableViewDataSource方法的正确签名为tableView:cellForRowAtIndexPath:而不是cellForRowAtIndexPath:

所以你的电话应该是,

 [self configureCell:[datasource tableView:tableView cellForRowAtIndexPath:indexPath] atIndexPath:indexPath];
 // If datasource is self, replace with self

希望有所帮助!