Ios 嵌入UINavigationView/TableView中的自定义UIScrollview崩溃-在动画中

Ios 嵌入UINavigationView/TableView中的自定义UIScrollview崩溃-在动画中,ios,objective-c,uitableview,segue,Ios,Objective C,Uitableview,Segue,在UITableView上,无论我执行什么操作,都无法获取选定的行。我试过: - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 但结果是零。我试过: NSIndexPath *indexPath = [self.tableView indexPathForCell:s

在UITableView上,无论我执行什么操作,都无法获取选定的行。我试过:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
但结果是零。我试过:

 NSIndexPath *indexPath = [self.tableView indexPathForCell:sender];
问题是发件人正在通过,正如我从日志中看到的:

 Sender is <ARASpecialCell: 0x75cd6d0; baseClass = UITableViewCell; frame = (0 44; 320 44); text = 'Late Night'; autoresize = W; layer = <CALayer: 0x75c98c0>>
我尝试了“索引路径处的选定行”来加载下一个视图控制器,但细节视图控制器是从故事板上的另一个视图控制器设置的,重新配置会很混乱


这个TableViewController没有什么特别之处。如果您对出现的问题有任何建议,我们将不胜感激

您需要在控制器中使用@property来保存所选项目。例如,您选择单元格,然后在
didSelectCellAtIndexPath
中,将适当的数据对象保存在selectedItem属性中。然后必须调用在interface builder中创建的segue

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
     self.selectedItem = [self.fetchedResultsController objectAtIndexPath:indexPath];
     [self performSegueWithIdentifier:@"Item Details Segue" sender:self];
}
然后在performsguewithidentifier中,您可以使用所选的编辑项执行任何操作:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
     if ([segue.identifier isEqualToString:@"News Details Segue"])
    {
        NewController *controller = segue.destinationViewController;
        NewController.item = self.selectedItem;
    }
}

非常感谢你。我至少犯了两个错误:(无意中的多次注释)1)第一个愚蠢的错误是,我在
didselectarowattindepath
中推送新视图控制器时陷入了冲突,以至于我忘记了仍然需要调用它来获取索引路径。2) 可能我犯了错误1,因为没有调用
didSelectARow…
,因为我将segue直接连接到表视图单元格。我可以看到一些明确的好处,如果制作一个带有表视图的全定制菜单,这是不直观的。把它挂在桌子上固定住了。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
     if ([segue.identifier isEqualToString:@"News Details Segue"])
    {
        NewController *controller = segue.destinationViewController;
        NewController.item = self.selectedItem;
    }
}