4

条件付きでセグエを発射するのに何日も苦労した後、ここでのサイモンの答えのおかげでなんとか解決できました。少し時間を取って見てください。さもないと、以下で私が話していることを理解できないかもしれません。彼はすでにあちらでうまく説明しているので、私は彼の答えをコピペしませんでした。

今、私は新たな疑問に直面しました。1 つの View Controller からセグエしたい複数の View Controller がある場合はどうすればよいですか?

さらに説明すると、MainViewControllerボタンが 2 つあるとします。各ボタンをクリックすると、それぞれのビュー コントローラーに移動する必要があります。最初のボタンをFirstViewControllerに、2 番目のボタンを にしSecondViewControllerます。

サイモンの回答で説明されている方法は、あるView Controllerから別のView Controllerにセグエするときに使用できます。このメソッドでは、セグエをボタンではなくビュー コントローラの rlf に結び付けるため、その特定のビュー コントローラの識別子を持つセグエは 1 つだけになります。したがって、ボタンタップを個別に区別することはできません。

この問題を解決する回避策はありますか?

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

4

3 に答える 3

4

これを言うのは少し時期尚早かもしれませんが、セグエをもっと深く調べるべきだと思います。

はい、ボタンからセグレを実行できます。ボタンをコントロールしてクリックし、カーソルをドラッグして、SEGUE にしたいコントローラーを表示します。そして、私の理解では、各ボタンをタップすると、固定ビューへのセグエが発生するという唯一の条件があります。そこに条件はありません。

また、ナビゲーションコントローラーを手動でプッシュすることもできます

YourViewController *destViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"YourDestinationViewId"];
[self.navigationController pushViewController:destViewController animated:YES];

アップデート:

prepareForSegue は、セグエの進行を止めるには遅すぎます。はい、ビューから他のView Controllerへの複数のセグエを作成できます。そして、この場合、そうしなければなりません。ボタンからセグエを作成しないでください。ボタンのクリック時に IBACtion を定義するだけで、そこから検証を行うことができます。

if(validationSuccess) {
     [self performSegueWithIdentifier:@"segue1" sender:self];
} 

ios6を使用している場合

 - (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender 

検証が成功した場合は YES を返し、失敗した場合は NO を返し、進行を停止します。

于 2013-03-10T11:11:39.737 に答える
0

コードロジックを少し作り直すことをお勧めします。

私の理解が正しければ、2 つのボタンを備えた VC (Nav. Controller に組み込まれている) があり、各ボタンを別の VC にセグエする方法を理解しています。

問題は、ボタンの 1 つが押された場合でも、アクションが実行される前に検証が行われるようにすることです。ユーザーは、このボタンが何かを実行するかもしれないと錯覚し、クリックしても何も起こらないため、これはユーザー インターフェイスの設計が悪いとアドバイスします。

UIButton は、IBActions (アクションを開始するため) および IBOutlets (それらのプロパティを設定するため) に接続できます。これが IB で直接作成されたボタンである場合、Outlet プロパティとしてクラスに接続します。

@property (nonatomic,weak) IBOutlet UIButton* myButton;

次に、有効な値を設定します。

self.myButton.enabled=NO;

これにより、ボタンが保持され、暗くなります。これははるかに優れた UI デザインであり、ユーザーは、いくつかの条件が満たされていないためにボタンを押すべきではないことを知っています。

たとえば、この値をデフォルトで無効に設定し、「条件」が満たされるたびにコードで適切に有効にするように、コードを作り直します。

明らかに、このボタンがプログラムで (IB を使用しないコードで) 作成された場合、上記の 2 番目のコマンドを使用するのは簡単です。

お役に立てれば。

于 2013-03-10T12:32:59.253 に答える