首页 文章

当点击详细信息披露按钮时,如何在uitableviews之间传递和传递数据?

提问于
浏览
0

首先,我需要澄清的是,当我不使用详细披露按钮而只是披露指示时,一切都运作良好 .

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

这是我对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加载时它不包含任何数据 .

任何建议将非常感谢!!

谢谢!

3 回答

  • 0

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

  • 0

    我想当你使用配件按钮时,没有选择单元格 . 而不是使用 indexPathForSelectedRow 获取indexPath,尝试从 sender 获取单元格(应该是单元格本身或附件按钮,我现在无法测试它) . 获得单元格后,使用 indexPathForCell: 获取其indexPath

  • 0

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

    UITableViewCell *cell = (UITableViewCell*)sender;
    NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
    

相关问题