-1

実は2つ質問があります。まず、シナリオについて説明します。シンプルなストーリーボード アプリがあります。最初のコントローラは、UITableViewControllerメール タイプのリストを表示するものです。セルをタップすると、 にセグエしUIViewController、選択したメール タイプに応じて、 を に読み込みUIViewますUIViewController。これはすべて正常に機能しています。私の問題は、

私が持っているのUIViewは高さ559です。余分な高さの がロードされたときにスクロール可能になるように、 のUIScrollView中に入れました。しかし、その代わりに、 は のサイズにサイズ変更されます。元の高さを維持して の中に埋め込むにはどうすればよいですか? Interface builder から、の一番下に を配置しました。しかし、がロードされると、 は消えます。(?)の上に が表示されると思います。どうすればこれを回避できますか?UIViewControllerUIViewUIViewUIViewControllerUIScrollViewUIToolbarUIViewControllerUIViewUIToolbarUIViewUIToolbar

これは理解するのが少し混乱するに違いないことを知っています。したがって、ここに 2 つの問題を示す Xcode プロジェクトをアップロードしました。

見て、私が何をすべきか教えてください。

ありがとうございました。

4

1 に答える 1

0

プロジェクトで行っていることには、これらの結果が得られる理由を説明するいくつかの問題があります。

  1. ではNewMailViewController.m、ストーリーボードで作成したビュー (スクロール ビューとツールバーを持つビュー) をペン先から読み込んだビュー (つまり ) に置き換えますself.view = [nib objectAtIndex:0];。-loadView でこれを試してください

    [super loadView];
    
    UIView *someView = nil;
    
    if ([self.mailTypeName isEqualToString:@"Email"]) {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"Email" owner:self options:nil];
        someView = [nib objectAtIndex:0];
    }
    else if ([self.mailTypeName isEqualToString:@"Facsimile"]) {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"Facsimile" owner:self options:nil];
        someView = [nib objectAtIndex:0];
    }
    else if ([self.mailTypeName isEqualToString:@"Memorandum"]) {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"Memorandum" owner:self options:nil];
        someView = [nib objectAtIndex:0];
    }
    else if ([self.mailTypeName isEqualToString:@"ProjectMemo"]) {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ProjectMemo" owner:self options:nil];
        someView = [nib objectAtIndex:0];
    }
    
    CGRect frame = someView.frame;
    frame.size.width = self.myScrollView.frame.size.width;
    [someView setFrame: frame];
    
    [self.myScrollView addSubview: someView];
    [self.myScrollView setContentSize: someView.bounds.size];
    
  2. 上記のコード スニペットには、スクロール ビューへの参照があることがわかります。NewMailViewController必要に応じて参照できるように、クラスにスクロール ビューのアウトレットを作成する必要があります。これをヘッダーファイルに入れる必要があります:

    @property (strong, nonatomic) IBOutlet UIScrollView *myScrollView;

    定義されたアウトレットを実際のストーリーボードのスクロール ビューに接続する必要があります。詳細については、インターネットで「Xcode でのアウトレットの作成または接続」を検索してください。

  3. ツールバーは、スクロール ビューのサブビューのように見えます。スクロール ビューのコンテンツがスクロールしている間、ツールバーをビューの一番下に置いておきたくありませんか? その場合、そのツールバー ビューをスクロール ビューの外に移動する必要があります。

変更点は次のとおりです: http://www62.zippyshare.com/v/90505016/file.html

于 2013-04-09T15:54:12.517 に答える