6

ストーリーボードを適切に使用してView Controllerをモーダルに配置する方法を考えていました。個人的にはxibsで作業する方が好きですが、絵コンテが人気を集めているようで、将来的にはこれが主流になるでしょう。

ビュー コントローラーをモーダルに配置する通常の方法は次のようになります。たとえば、ViewControllerA (略して A) と ViewControllerB (略して B) があるとします。次に、通常、B を破棄したい場合にデリゲート メソッドを指定するプロトコルを Bh に配置し、id<theProtocol> delegateフィールドをassignプロパティとして追加します。私が A で忙しく、B をモーダルに提示したいと仮定すると、次のように書きます。

B* b = [[B alloc] initWithNibName:@"B" bundle:nil];
b.delegate = self;
[self presentModalViewController:B animated:YES];

ストーリーボードを使用すると、ctrl キーを押しながらボタンからビュー コントローラーにドラッグし、トランジション タイプとしてモーダルを選択することで、別のビュー コントローラーをモーダルな方法で配置できることがわかりました。ただ疑問に思っています。新しいView Controllerのデリゲートはどこに設定すればよいですか? モーダルView Controllerに物を渡す正しい方法は何ですか? Segues との取引全体が何なのか、私にはよくわかりません...

4

2 に答える 2

5

この チュートリアルを見てください

それによると、デリゲートを次のように設定する必要があります。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"AddPlayer"])
    {
        UINavigationController *navigationController = 
          segue.destinationViewController;
        PlayerDetailsViewController 
          *playerDetailsViewController = 
            [[navigationController viewControllers] 
              objectAtIndex:0];
        playerDetailsViewController.delegate = self;
    }
}

@"AddPlayer" は「モーダル」セグエの名前です

于 2011-11-24T19:21:43.930 に答える
0

UIStoryboardSegueナビゲーション コントローラを使用する代わりに、渡されたオブジェクトを直接使用できますprepareForSeguedestinationViewControllerインスタンス化されているView Controllerであると呼ばれるプロパティがあります。私はそれがずっときれいだと思います。これは一例です。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"AddPlayer"])
    {
        PlayerDetailsViewController 
          *playerDetailsViewController = 
            (PlayerDetailsViewController *) segue.destinationViewController;

        playerDetailsViewController.delegate = self;
    }
}

IMO ストーリーボードは、アプリケーションの設計図のように機能するため、優れていると思います。また、私はペン先が好きではありませんでした。=D

于 2012-05-03T02:09:51.917 に答える