0

首先,我需要澄清的是,当我不使用详细信息披露按钮而只使用披露指示器时,一切正常。

经过相当多的研究后,当点击详细信息披露按钮时,我正在努力解决如何将正确的数据从一个表格视图传递到另一个表格视图。我正在使用核心数据来存储我的数据,并且我已经创建了从主 UITableViewController (SGProfileTVC) 到细节 SGItemDetailsTVC 的适当的 segue (Item Details Segue)。

这是我对 prepareForSegue 的实现:(UIStoryboardSegue *)segue sender:(id)sender

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString:@"Add Item Segue"])
{
    NSLog(@"Setting SGProfileTVC as a delegate of SGAddItemTVC");
    SGAddItemTVC *sgAddItemTVC = segue.destinationViewController;
    sgAddItemTVC.delegate = self;
    sgAddItemTVC.managedObjectContext = self.managedObjectContext;
} else if([segue.identifier isEqualToString:@"Item Details Segue"])
{
    NSLog(@"Setting SGProfileTVC as a delegate of SGItemDetailTVC");
    SGItemDetailTVC *sgItemDetailTVC = segue.destinationViewController;
    sgItemDetailTVC.delegate = self;
    sgItemDetailTVC.managedObjectContext = self.managedObjectContext;

    // Store selected item  in selectedItem property
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
    self.selectedItem = [self.fetchedResultsController objectAtIndexPath:indexPath];

    NSLog(@"Passing the selected item (%@) to SGItemDetailTVC", self.selectedItem.name);
    sgItemDetailTVC.item = self.selectedItem;

} else {
    NSLog(@"Unidentified Segue");
}

}

我还实现了 tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath 方法

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
[self performSegueWithIdentifier:@"Item Details Segue" sender:[self.tableView indexPathForSelectedRow]];
}

发生的事情是它通常会继续,但是当新的 tableview 加载时它不包含任何数据。

任何建议将不胜感激!

谢谢!

4

3 回答 3

0

我猜当您使用附件按钮时,未选择单元格。不要使用 获取 indexPath ,而是indexPathForSelectedRow尝试从中获取单元格sender(应该是单元格本身或附件按钮,我现在无法测试它)。一旦你有了单元格,使用indexPathForCell:它来获取它的 indexPath

于 2014-10-04T15:41:23.243 回答
0

您的新表视图是否有获取结果控制器?它应该有一个,因为获取的结果控制器会自动管理表视图的数据显示(例如重新加载)。

于 2012-09-20T16:13:54.630 回答
0

Imotep 有正确的答案。代码如下所示:

UITableViewCell *cell = (UITableViewCell*)sender;
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
于 2016-12-07T15:59:38.980 回答