web-dev-qa-db-ja.com

ストーリーボードにスタンドアロンビューを作成して、プログラムで使用します

ストーリーボードを使用してUIViewを作成および設計しようとしていますが、プログラムでUIActionSheetに含めています。これは基本的に、ピクセルでCoreGraphicsの位置決め関数を使用しないようにするためです。

古いxcodeでは、コントローラーなしでUIViewをペン先にドラッグすることが可能だったことを覚えています。

ビューは明らかにクラスに接続されている必要があるため、IBOutletがありますが、self.viewには追加されません。

これが可能であると私に感じさせる1つのことは、UIViewをストーリーボードのコントローラーの黒いバーにドラッグすると、次のように所定の位置にポップすることです。

Snapped in UIView

ただし、画面自体には表示されません。この機能は何のためにありますか?どういうわけかこのビューを開いて少しデザインできますか?

13
Yarek T

新しい.xibファイルを作成するだけです。

  1. ナビゲーター領域のどこかを右クリックして、「新しいファイル...」を選択します。
  2. 右側のリストから「ユーザーインターフェイス」を選択し、「表示」を選択します。
  3. [次へ]、[次へ]をクリックし、新しいビューに名前を付けて、[作成]をクリックします。
  4. 新しい.xib塗りつぶしがプロジェクトに追加されます。
  5. 新しい.xibファイルをダブルクリックすると、(ストーリーボードではなく)InterfaceBuilderで開きます。
  6. ビューを好みに合わせて編集/設計します。

次に、Interface Builderで新しいビュー(.xib)を取得したら、UIViewの新しいサブクラス(ex。MyView)を作成し、新しいクラスを切り替えるだけです。ビュー(.xib)をMyViewに追加し、コントローラーでMyViewのインスタンスを作成し、それをサブビューとして他のビューに追加します。


*そして、下部にある小さな黒いバーについての質問に答えるために、それは「ドック」と呼ばれます'、そしてそれはあなたのシーンのトップレベルのドキュメントの単なるミニ表現です。ドックは、アイコンをすばやくドラッグアンドドロップして接続するのに便利です。 Appleのストーリーボードの説明を参照してください ここ 。 Ray Wenderlichには、ストーリーボードに関するわかりやすいチュートリアルがあります ここ

15
eric

ストーリーボードのUIViewの外にUIViewControllerを含めることはできません。ストーリーボードが現在のAPIを識別またはインスタンス化する方法を知らないためだと思います。それは私が自分で使ったことがあるものです。解決策は、1つのUIViewにXIBを使用し、プログラムでロードすることです(以前と同じように)。ほとんどのアイテムにストーリーボードを使用し、複数のビューコントローラー間で再利用可能なビューにいくつかのXIBを使用すると、うまく連携することがわかりました。

これは、オブジェクトが初期化されるカスタムオブジェクトの一部としてXIBをロードするために使用するコードです。

- (id)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        [[[NSBundle mainBundle] loadNibNamed:@"BannerView" owner:self options:nil] objectAtIndex:0];
        [self addSubview:self.view];
        self.frame = self.view.frame;
    }
    return self;
}

ビューをストーリーボードの黒いバーにドラッグすることについて。これらのビューはまだUIViewControllerの一部ですが、トップレベルビューの「サブビュー」ではありません。ドキュメントのアウトラインは階層をうまく示していると思います。

次のビューには、メインビューのサブビューではないため、メインビュー階層の外側に2.1.1ビュー、2.1.2ビューなどがあります。その結果、デフォルトでは表示されません。 IBOutletsを設定していて、標準のaddSubview:removeFromSuperviewを使用して、条件付きでメインビュー階層に追加/削除します。

IB Document Outline example

6
DBD