最初に、詳細開示ボタンを使用せず、開示インジケーターのみを使用すると、すべてが完全に機能することを明確にする必要があります。
かなりの調査の後、詳細開示ボタンがタップされたときに、あるテーブルビューから別のテーブルビューに正しいデータを渡す方法に苦労しています。私はコア データを使用してデータを保存しており、マスター UITableViewController (SGProfileTVC) から詳細 1 つの 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 accessoriesButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath メソッドも実装しました。
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
[self performSegueWithIdentifier:@"Item Details Segue" sender:[self.tableView indexPathForSelectedRow]];
}
何が起こっているかというと、それは正常にセグエするということですが、新しいテーブルビューがロードされたときにデータが含まれていません。
どんな提案でも大歓迎です!!
ありがとうございました!