0

私は独自の.nibファイルを含むViewControllerを持っていますが、ある種のメニューとなるこのViewControllerに別の.nibをロードしたいと思っています...しかし、これを行う方法がわからず、助けを期待していました。

コードを紹介する前に、私が行ったことを説明します。

  • メインビューであるペン先を持つUIViewControllerがあります。
  • メインビューのサブビューとして表示されるメニューになる別のペン先を作成しました
  • このnibsクラスをメインビューのUIViewControllerに変更して、同じIBActionとアウトレットをすべて表示できるようにしました。
  • 次に、別のペン先をサブビューとしてロードしようとして以下のコードを実行しましたが、実行すると、他のペン先のサブビューが表示されません。

        jumpBarPortraitNib = [[UIView alloc] initWithFrame:CGRectMake(0.0, 50.0, 320.0, 367.0)];
    
    
    
        // add jumpbar container to view
        [self.view insertSubview:jumpBarPortraitNib belowSubview:actionTabBar];
    
4

2 に答える 2

3

ここには明らかに混乱があります。

ペン先は、(通常)1つ以上のビューオブジェクト(UIViewこの場合)を含む(*)オブジェクトを含む単なるアーカイブです。「ペン先をサブビューとしてロードする」ことはありません。ペン先をインスタンス化し、所有および管理するためにペン先に渡す可能性がUIViewControllerあり、ペン先内で参照されるビューをビュー階層に追加します。

コードの最初の行で行ったのはUIView、指定されたフレームサイズでジェネリックインスタンスを作成し、それを[セルフビュー]に挿入することだけです。ビューの名前をペン先と間違えたとしても、実際にペン先を参照しているものは何もありません。

あなたがしていることのために、私はおそらく2つのルートのうちの1つに行きます:

  1. ビューを元のペン先に別のトップレベルビューとして追加し、に接続しますIBOutletUIViewControllerその後、nibのファイル所有者として設定した共通インスタンス内からメニューを簡単に表示できます。
  2. メニュービューを管理するだけの別のUIViewControllerインスタンスがあり、@Aaronが述べたように使用してnibのコンテンツをインスタンス化するために使用します-initWithNibName:。(フレームを外部で設定する必要はないことに注意してください。フレームはビューのプロパティとしてペン先にアーカイブされます。)

*:そうではありませんが、このように考えることができます。

于 2012-07-02T22:44:22.740 に答える
0

initWithNibNameを使用してから、次の行にフレームを設定する必要があります。

UIViewController * jumpVC = [[UIViewController alloc] initWithNibName:@"jumpBarPortrait" bundle:nil];
jumpVC.view.frame = //your frame
于 2012-07-02T22:42:26.320 に答える