首先,我需要澄清的是,当我不使用详细披露按钮而只是披露指示时,一切都运作良好 .
经过相当多的研究后,当我点击详细信息披露按钮时,我正在努力将如何将正确的数据从一个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 回答
您的新表视图是否具有提取的结果控制器?它应该有一个,因为获取的结果控制器自动管理表视图的数据显示(例如重新加载) .
我想当你使用配件按钮时,没有选择单元格 . 而不是使用
indexPathForSelectedRow
获取indexPath,尝试从sender
获取单元格(应该是单元格本身或附件按钮,我现在无法测试它) . 获得单元格后,使用indexPathForCell:
获取其indexPathImotep有正确的答案 . 代码如下所示: