indexPath在表视图中没有值

时间:2015-10-08 18:20:31

标签: ios objective-c

我有一个显示联系人列表的表格视图,当您单击一个单元格时,会弹出一个详细视图控制器,其中包含显示联系人姓名,号码,传真和地址的标签。我的问题是,每次单击一个单元格时,无论我单击哪个单元格,plist中的第一个值都会弹出。每当NSLog(@"%@",indexPath);返回null时,我在indexPath中发现了错误。我认为问题出在这个方法中,但它在其他类中看起来一样,并且工作正常。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"showCountyInfo"])
    {
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
        NSLog(@"%@",indexPath);
        TSPBookCoverViewController *destViewController = segue.destinationViewController;
        destViewController.countyName = [[self.books objectAtIndex:indexPath.row] objectForKey:@"Name"];//error
        destViewController.phoneName = [[self.books objectAtIndex:indexPath.row] objectForKey:@"Phone"];
        destViewController.faxName = [[self.books objectAtIndex:indexPath.row] objectForKey:@"Fax"];
        destViewController.addressName = [[self.books objectAtIndex:indexPath.row] objectForKey:@"Address"];
    }
}

当我输入整数而不是indexPath.row时,它会像它应该的那样工作,所以问题就在这里我找不到它。对不起,如果很明显我已经尝试了一段时间了!

编辑: 这是didSelectRowAtIndexPath方法:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    // Perform Segue
    [self performSegueWithIdentifier:@"showCountyInfo" sender:self];   
}

2 个答案:

答案 0 :(得分:2)

问题在于以下代码:

[tableView deselectRowAtIndexPath:indexPath animated:YES];

您正在取消选择didSelectRowAtIndexPath:方法中的单元格。因此indexPathForSelectedRow将始终返回nil

答案 1 :(得分:0)

解决问题的最佳方法是从

中的self.books数组中获取字典

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

然后执行segue并从prepareForSegue

中的字典中获取值