2012-08-25 1 views
5

ボタンを押したときに新しいセグを押す必要があります。しかし、私はまた、セグがプッシュされる前にトリガーされる必要があるアクションをそれに付ける。ボタンのアクションとセグの動作を分離

お互いを分ける方法を教えてもらえますか?どんな助けもありがとう。

答えて

13

ボタンに接続するのではなく、ビューコントローラーからビューコントローラーに直接セグを設定します。意味のある名前を付けてください。

次に、ボタンのアクションメソッドで、最初に行う必要がある処理を実行し、以前に選択した意味のある名前を使用して、ビューコントローラのperformSegueWithIdentifier:メソッドを使用してセグを実行します。

あなたのコメントから、あなたのセグから出現しようとしているビューコントローラのプロパティを設定しようとしているようです。このような場合は、prepareForSegue:を実装し、segue.destinationViewControllerを使用して、表示しようとしているビューコントローラへのポインタを取得する必要があります。

+0

ありがとうございます。私はあなたが言ったことをやってみたが、まだビューが最初にプッシュされ、アクションは後に実行されます。ここで私が使用しているコーディングだ - ' code' - (IBAction)がsearchButtonPressed:(ID)、送信者{ のViewController *のViewController = [[のViewControllerのalloc] initWithNibName: "ViewControllerを" バンドル@:nilを]; viewController.query = [NSString stringWithFormat:@ "%@"、search.text]; [self performSegueWithIdentifier:@ "検索"送信者:自己]; [viewController release]; } 'code' –

+0

これはうまくいきません! segueが実行されると、OSによって新しいビューコントローラが作成されるので、コード内で作成したビューコントローラは何もしません。代わりに 'prepareForSegue:'にそれらのプロパティを設定する必要があるように見えます。 – jrturton

+0

私は両方のソリューションを実装しました。物事は少しうまくいくようだが、今はアプリがクラッシュしている。私はこれを追加しようとしました - - (IBAction)searchButtonPressed:(id)送信者{ [self performSegueWithIdentifier:@ "search" sender:sender]; } - (ボイド)prepareForSegue:(UIStoryboardSegue *)セグエ送信者:(ID)、送信者{ IF([isEqualToString segue.identifier:@ "検索"]){ のViewController *のViewController = [セグエdestinationViewController]; viewController.query = [NSString stringWithFormat:@ "%@"、search.text]; [viewController release]; } } –

関連する問題