ストーリーボードを使用してUIView
を作成および設計しようとしていますが、プログラムでUIActionSheet
に含めています。これは基本的に、ピクセルでCoreGraphicsの位置決め関数を使用しないようにするためです。
古いxcodeでは、コントローラーなしでUIViewをペン先にドラッグすることが可能だったことを覚えています。
ビューは明らかにクラスに接続されている必要があるため、IBOutletがありますが、self.view
には追加されません。
これが可能であると私に感じさせる1つのことは、UIViewをストーリーボードのコントローラーの黒いバーにドラッグすると、次のように所定の位置にポップすることです。
ただし、画面自体には表示されません。この機能は何のためにありますか?どういうわけかこのビューを開いて少しデザインできますか?
新しい.xibファイルを作成するだけです。
次に、Interface Builderで新しいビュー(.xib)を取得したら、UIViewの新しいサブクラス(ex。MyView)を作成し、新しいクラスを切り替えるだけです。ビュー(.xib)をMyViewに追加し、コントローラーでMyViewのインスタンスを作成し、それをサブビューとして他のビューに追加します。
*そして、下部にある小さな黒いバーについての質問に答えるために、それは「ドック」と呼ばれます'、そしてそれはあなたのシーンのトップレベルのドキュメントの単なるミニ表現です。ドックは、アイコンをすばやくドラッグアンドドロップして接続するのに便利です。 Appleのストーリーボードの説明を参照してください ここ 。 Ray Wenderlichには、ストーリーボードに関するわかりやすいチュートリアルがあります ここ 。
ストーリーボードの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
を使用して、条件付きでメインビュー階層に追加/削除します。