1

とても簡単な質問があります。2つのビューコントローラAとBがあるとします。Aは静的セルを備えたUITableViewです。つまり、Aは、プログラムではなく、ストーリーボードオブジェクトのみを使用して構築されます。BもUITableViewですが、DYNAMICCELLSを使用してプログラムで構築されています。そこで、Aの各セルからBテーブルビューにセグエ(ストーリーボードに識別子が設定されている)を配線しました。

ここで私が知りたいのは、Aの行が選択されたときにどのセグエがプッシュされたかを知ることです。ビューAでセルをプログラムで作成し、準備/実行セグエメソッドを使用すると、これを簡単に実行できることを知っています。しかし、Aの内容は決して変わらないので、そのルートには行きたくありません。Aで特定の行を選択したときに、どのセグエがプッシュされたかを確認する方法を見つけようとしている理由。理想的には、メソッドDIDPERFORMSEGUE :(セグエ識別子)Bビューコントローラーから呼び出すことができます。

あなたの助けと提案をどうもありがとう。

4

2 に答える 2

2

「A」テーブルビューで、どの行がポークされたかを確認し、その情報を「B」テーブルにプッシュできるはずです。例えば:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if([[segue identifier] isEqualToString:@"UITableView_B"]){
        BTableViewController *vc = (BTableViewController *)[segue destinationViewController];
        NSIndexPath *path;
        path = [self.tableView indexPathForSelectedRow];
        [vc setSelectedPath:path];
    }
}

お役に立てば幸いです。幸運を祈ります。

編集:おそらく明らかですが、上記の「self.tableView」はUITableViewを指すアウトレットです。

個人的に更新 する私は弾丸を噛んで「A」のクラスを作成しますが、ハッキングのために、前のビューに戻ってデータを取得できるようにする必要があります。これは「不正なコード」(imo)であり、ナビゲーションコントローラーを使用していることを前提としています。前のビューは「A」テーブルなどです。これ以上苦労することなく、これを行うことができます。

NSArray * views = [self.navigationController viewControllers];
NSUInteger prevViewIndex = [views count] - 2;
UIViewController * previousView = [views objectAtIndex:prevViewIndex];
ATableViewController * aTableViewController = (ATableViewController *) previousView;
NSIndexPath *path = [aTableViewController.tableView indexPathForSelectedRow];
于 2013-01-27T18:14:39.400 に答える
0

自分でこれを行う必要があるとは言えませんが、ソースView Controllerを本当に変更したくない場合、または宛先View Controllerからセグエを頻繁に識別する必要がある場合は、それを行う1つの方法があります。独自のUIStoryboardSegueサブクラスを作成することです。セグエはすでに宛先ビューコントローラーについて知っているので、宛先にセグエを検査する機会を与えるのは簡単なことです。このような何かがトリックを行う必要があります:

@interface MyStoryboardSegue : UIStoryboardSegue
@end

@implementation MyStoryboardSegue

- (void)perform
{
    [super perform]

    if ([self.destinationViewController respondsToSelector:@selector(didPerformSegue:)]) {
        [self.destinationViewController didPerformSegue:self];
    }
}

@end

他の理由でUIStoryboardSegueサブクラスをすでに使用している場合、これは優れたソリューションではありません。実際、私はコードをテストしたことさえないので、おそらく私がまだ考えていないいくつかの障害があります。ただし、重要なのは、実行時にセグエが宛先に通知するようにしたい場合は、おそらくそれを調整できるということです。

于 2013-07-10T20:03:45.507 に答える