4

私のWishlistVC(すべてのウィッシュリストを一覧表示するVC)にアンワインドセグがあります。現在、この VC により、ユーザーはウィッシュリストをタップし、空の場合はEditWishlistItemsVC を表示して、そのウィッシュリストに入れる項目を選択できます。EditWishlistItemsWishlistVC には、ユーザーが新しいウィッシュリストを作成できる別のボタンもあり、ユーザーが新しいウィッシュリストに項目を追加できるようにを呼び出します。これらは両方とも、同じ VC に対する異なるセグエです。

EditWishlistItemsアンワインドするとき、誰がVC を起動したか、つまり、アンワインド セグエでどのセグエを実行したかを知りたいです。モーダル セグエからの場合addItemsToWishlistはウィッシュ リストを Core Data に追加し、editWishlistItemsモーダル セグエからの場合はウィッシュ リストの項目を CD で編集します。

リラックスしたときにこの情報を知る方法はありますか?

4

2 に答える 2

1

THE_DOMの答えは良いですが、これが私の問題を解決した方法です。

モーダル セグエが必要かどうかを確認するには、次のデリゲート メソッドでウィッシュ リストにアイテムがないかどうかを確認します。そうでない場合は、セグエに指示します。アイテムがある場合は、代わりにプッシュ セグエが自動的に呼び出されます (IB で設定)。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    Wishlist *wishlist = [self.fetchedResultsController objectAtIndexPath:indexPath];
    if([wishlist.items count] == 0) {
        // execute our segue
        [self performSegueWithIdentifier:@"editWishlistItems" sender:self];
    }
}

では、ユーザーが空のウィッシュリストをタップしたことを示すためにprepareForSeguea を設定します (これは目的の VC にあります)。BOOL

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
    ... // other segues
    if([segue.identifier isEqualToString:@"editWishlistItems"])
    {
        UINavigationController *navigationVC = (UINavigationController *)segue.destinationViewController;
        ManageWishlistItemCDTVC *manageWishlistItemVC = (ManageWishlistItemCDTVC *)navigationVC.topViewController;
        manageWishlistItemVC.tappedOnEmptyWishlist = YES;
        manageWishlistItemVC.wishlist = [self.fetchedResultsController objectAtIndexPath:indexPath];
    }
}

そして、巻き戻すときに、BOOLYESかかを確認しますNO

- (IBAction)saveWishlistItem:(UIStoryboardSegue *)segue {
    ManageWishlistItemCDTVC *manageWishlistItemVC = (ManageWishlistItemCDTVC *)segue.sourceViewController;

    // check to see if we came from edit segue or add segue
    if(manageWishlistItemVC.tappedOnEmptyWishlist) { // edit segue
        // saved edited wishlist
    } else { // add segue
        if([manageWishlistItemVC.selectedItems count] > 0) {
            // save new wishlist
    }
}
于 2013-05-30T12:25:52.137 に答える