0

最初に、詳細開示ボタンを使用せず、開示インジケーターのみを使用すると、すべてが完全に機能することを明確にする必要があります。

かなりの調査の後、詳細開示ボタンがタップされたときに、あるテーブルビューから別のテーブルビューに正しいデータを渡す方法に苦労しています。私はコア データを使用してデータを保存しており、マスター 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]];
}

何が起こっているかというと、それは正常にセグエするということですが、新しいテーブルビューがロードされたときにデータが含まれていません。

どんな提案でも大歓迎です!!

ありがとうございました!

4

3 に答える 3

0

アクセサリボタンを使用すると、セルが選択されていないと思います。で indexPath を取得する代わりに、indexPathForSelectedRowからセルを取得してみてくださいsender(セル自体またはアクセサリ ボタンである必要があります。今はテストできません)。セルを取得したら、使用indexPathForCell:してその indexPath を取得します

于 2014-10-04T15:41:23.243 に答える
0

新しいテーブル ビューにはフェッチされた結果コントローラーがありますか? フェッチされた結果コントローラーがテーブル ビューのデータ表示 (リロードなど) を自動的に管理するため、1 つある必要があります。

于 2012-09-20T16:13:54.630 に答える