0

ビューコントローラーが2つしかない非常に単純なアプリケーションがあります。最初のルート コントローラーには 2 つの UIButton があり、両方とも Storyboard を介して 2 番目のビュー コントローラーに遷移します。2 番目のビュー コントローラーにロードされる情報は、両方の最初のビュー コントローラーにリンクされている buttonPressed IBAction によって決定されます。私が抱えている問題は、2 つのボタンのいずれかをタップすると、2 番目のビュー コントローラーが空白で読み込まれることです。デバッグから、2 番目のビューが読み込まれた後に buttonPressed 関数が呼び出されることに気付きました。2番目のView Controllerが空白でロードされる前にbuttonPressed関数が呼び出されるようにするにはどうすればよいですか?

関与するコードはほとんどなく、1 と 2 の両方の UIButton がタグ付けされており、ボタンを押す関数は、1 または 2 に等しい送信者タグに応じて 2 つのテキスト ファイルをロードします。すべてがストーリーボードにリンクされています。助言がありますか?

*buttonPressed 関数:

if([送信者タグ] == 1)

count = 1;

そうしないと

count = 2;

カウントは、ロードされるファイルを決定します。

*ストーリーボードでは、2 つのビュー コントローラー (ナビゲーションなどはありません) と、最初のビューに 2 つの UIButton、2 番目のビューにテキストを表示するためのテキスト ビューしかありません。UIButtons は、buttonPressed と 2 番目のビュー コントローラー セグエに接続されます。

4

2 に答える 2

1

ボタンが押された場合のIBActionを気にしないでください。ボタンを新しいコントローラーにセグエさせ、prepareForSegue:sender:どのボタンがタップされたか(送信者)を把握するために使用します。

次に、次のようなもので表示されようとしているコントローラーへの参照を取得できます...

SecondController *next = (SecondController *)[segue destinationViewController];

...そして、どのファイルをロードするかを指示します。これはで実行できますviewDidLoad:

于 2012-05-16T19:52:35.837 に答える
0

prepareForSegueこれは!のケースのように聞こえます。

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([[segue identifier] isEqualToString:@"First Button Segue Identifier"])
    {
        ViewController *theViewController = segue.destinationViewController;
        theViewController.textProperty = self.firstButtonText;
    } 
    else if ([[segue identifier] isEqualToString:@"Second Button Segue Identifier"])
    {
        ViewController *theViewController = segue.destinationViewController;
        theViewController.textProperty = self.secondButtonText;
    }
}

変数名や使用しているテキストがわからなかったので、かなり一般的です。同様に、セグエに個別の識別子がない場合は、送信者を使用して、どのボタンが押されているかを判断できます。

幸運を!

于 2012-05-16T19:57:00.033 に答える