2

次の指示に従って、プロジェクトを XIB の使用からストーリーボードに移行しました: https://stackoverflow.com/a/9708723/2604030うまくいき ました。しかし、セグエをプログラムで機能させることはできません。この方法で使用する必要があります。同じ ViewController に異なるタイプでリンクする 2 つのボタンがあるためです。この画像からその理由を理解していただければ幸いです。

ここに画像の説明を入力 難易度ボタンは2つ。私が使用するコード:

`- (IBAction)btnNormalAct:(id)sender {
    LevelController *wc = [[LevelController alloc] initWithNibName:@"LevelController" type:0];
    [self.navigationController pushViewController:wc animated:YES];
}

- (IBAction)btnTimedAct:(id)sender {
    LevelController *wc = [[LevelController alloc] initWithNibName:@"LevelController" type:1];
    [self.navigationController pushViewController:wc animated:YES];
}`

これは、XIB を使用したときに機能し、ストーリーボードの VC ですべてを正しくリンクしたと確信しています。絵コンテから作ったらシーグスが動きます。しかし、どうすればこの状況を管理できますか。

また: XIB からストーリーボードに変更するとき、これらの行は適切ですか? それはこの変更を行う正しい方法ですか (上記のリンクに示されている方法)?

    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
}
4

2 に答える 2

5

このメソッドを使用して、PrepareForSegue呼び出される前に受信ビュー コントローラーに設定することができます。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Make sure your segue name in storyboard is the same as this line
    if ([[segue identifier] isEqualToString:@"YOUR_SEGUE_NAME_HERE"])
    {
        // Get reference to the destination view controller
        LevelController *vc = [segue destinationViewController];

        // Pass any objects to the view controller here, like...
        [vc setType:1];
    }
}
于 2013-08-22T18:51:27.720 に答える
1

ボタン アクションは使用しないでください。セグエをボタンに接続し、セグエに一意の識別子を付けます。次に、コントローラーに実装prepareForSegue:sender:します。メソッドが起動したら、seque 識別子を確認し、「destinationViewController」に適切なタイプを設定します。

ストーリーボードを使用する場合は、 を使用するのではなく、ストーリーボードからコントローラーをインスタンス化する必要がありますinitWithNibName:bundle:。これは、各View Controllerに一意の識別子を与えてから、現在のコントローラーから取得できるストーリーボードで(または必要に応じて を使用して)呼び出すinstantiateViewControllerWithIdentifier:(または、最初のView Controllerの場合は単に を呼び出す)ことによって行われます。instantiateInitialViewControllerstoryboardWithName:bundle:

于 2013-08-22T18:52:16.407 に答える