1

xcode 5 のストーリーボードを理解できません。マニュアルを実行して答えを探していますが、単純なストーリーボード シーンであっても何も機能しません。ほとんどすべてのマニュアルは xcode 4.x に関するものですが、私は 5 番目で作業しています。私が理解しているように、xcode 4 と 5 のシーンの実装にはいくつかの違いがあります。ストーリーボードの原則がまったく理解できないため、何も機能しない理由がわかりません。xib とストーリーボードの違いを理解するのを手伝ってください。どのような条件の下で作業するのに最適ですか? 私が持っている本はすべて IOS 6 に関するもので、5 番目の xcode では実行できない xib の例がすべて含まれています。developer.apple.com で適切なドキュメントが見つからず、混乱しています。xcode 5 + IOS 7 に関する書籍が数か月以内にリリースされる予定です。このスキームを作成するのを手伝ってください。テーブルビューのセルは静的です。スキームへのリンクhttps://www.dropbox.com/s/mwwfqgsj2d98exe/Scheme.jpg

4

1 に答える 1

2

Xcode 5 のストーリーボードの説明と、下の画像で概説されているスキームで特定されている異なるシーン間の接続方法の詳細を次に示します。

全体像から始めます。

  1. あるシーンまたは別のシーンの間でセグエを作成するには、あるビュー コントローラーからターゲットビュー コントローラーに Ctrl キーを押しながらドラッグします (コントロールから別のビューに Ctrl キーを押しながらクリックする必要はなくなりました)。
  2. ソース シーン (ドキュメント アウトライン ビュー) で、作成されたセグエをクリックします。
  3. ID インスペクタで、セグエ識別子の一意の名前を作成します
  4. どのコントロールでも、次のビュー コントローラー メソッドを呼び出してセグエを実行できるようになりました - (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender
  5. ソースView Controllerで次のメソッドを実装することにより、View Controller間でデータを渡すことができます:- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

あなたのスキームに固有:

ストーリーボード内: ドキュメント アウトライン内 (エディタ > ドキュメント アウトラインの表示):

2 つのシーンを展開する

  1. ViewController1 から ViewController2 へ Ctrl キーを押しながらドラッグ
  2. ソース シーンで、作成されたセグエをクリックし、アイデンティティ インスペクターで識別子を設定します。
  3. ソースView Controllerで、上記のprepareForSegueを作成して、View Controller間でデータオブジェクトにアクセスして渡します(ターゲットView Controllerにプロパティがあることを確認し、segueIdentifierを使用して送信するデータを制御します)
  4. 2 つのボタンのアクション メソッドで、View2 と View5 に異なる ID を使用してそれぞれのセグエを呼び出します [self performSegueWithIdentifier:@"MYSEGUE_ID" sender:btnObjectNilEtAl];
  5. セグエを他のビュー コントローラにレンダリングするには、ソース ビュー コントローラとターゲット ビュー コントローラ (View2 から View4/View5) の間で Ctrl キーを押しながらドラッグするプロセスを繰り返します。
  6. セグエをテーブルビュー セルからエンゲージするには、[self performSegueWithIdentifier:@"MYSEGUE_ID" sender:btnObjectNilEtAl]; を追加するだけです。didSelectRowAtIndexPath メソッドにコーディングします。

開始するためのコード サンプルを次に示します。

// In a story board-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{

    if ([[segue identifier] isEqualToString:@"showDealDetail"])
    {
        // Get reference to the destination view controller
        DealDetailViewController *dvc = [segue destinationViewController];

        // Pass any objects to the view controller here, like...
        [dvc setDetailObject:(NSManagedObject*)sender];
    } else if ([[segue identifier] isEqualToString:@"showActivityDetail"])
    {
        ActivityDetailViewController * advc = [segue destinationViewController];

        // Pass any objects to the view controller here, like...
        [advc setDetailObject:(NSManagedObject*)sender];
    } else if ( [[segue identifier] isEqualToString:@"showMatchDetail"])
    {
        MatchDetailViewController * mdvc = [segue destinationViewController];

        // Pass any objects to the view controller here, like...
        [mdvc setDetailObject:(NSManagedObject*)sender];
    }
}

2 つのボタン アクション メソッド内の ViewController1 から、次のように呼び出します。

 //execute manual segue
        [self performSegueWithIdentifier:@"showAlternate" sender: self];

図式

于 2013-10-08T23:01:23.343 に答える