0

View xib に配線されたUIViewController( ) があります。ContentViewControllerにドロップするTextViewUIView、IB の階層にサブビューとして表示されます。
ContentViewControllerにはコンセントとしてラベルがあり、 のラベルに配線されていContentView.xibます。以下のコードを実行すると、最初のビューにはテキスト ビューが表示されますが、他のビュー/ページをスクロールするとラベルのみが表示されます。

for(int i=0; i< 5; i++){
  ContentViewController *contentView = [[ContentViewController alloc] initWithNibName:@"ContentView" bundle:[NSBundle mainBundle]]; 
  [contentView loadView];
  contentView.theLabel.text =[NSString stringWithFormat:@"hello again..%d", i];
  [self.scrollView addSubview:contentView.view];
}

ボタンまたはテキストフィールドを IB のビューにドラッグすると、ページをスクロールしてもすべてそこに表示されます。上記のテキストはラベルにも設定されています。テキストビューは最初のページの後に消えます。テキストも設定できません。新しいテキストビューをにドラッグしましたがUIView、最初のページの後にも消えます。テキストビューのために何か別のことをする必要がありますか?


UIScrollViewが各ページにあることがわかりました。スクロールビューがある場所を縦にスワイプすると、テキストが表示されます。しかし、最初のスクロールビュー以降のすべてのスクロールビューでそれを行う必要があります。

ただし、スワイプすると、アプリを再起動するまでテキストが表示されたままになります。スクロールするのに十分なテキストがない場合、テキストビューは表示されません。この動作に関する提案はありますか?

4

1 に答える 1

1

試す :

[textView setNeedsDisplay];


元の回答

テキストビューを別の方法で処理する必要はありません。

最初に「loadview」の呼び出しについて心配します。それを直接呼び出すことは決してありません。必要に応じて自動的に呼び出されます。

また、ループの前に contentview を宣言する必要があり、メモリ リークが発生しています。

あなたの他の問題は、ループ中に各ビューのフレームを決して変更しないことです。それらはすべて {0,0} のオリジンを持っています。あなたのコードからわかる限り。これが、ビューが非表示になっている理由である可能性があります。

最後に、スタイル ノートとして、私はビュー コントローラーを XXXXXview とは呼ばず、コントローラーという単語が含まれている必要があります。

    CGRect frame;
    ContentViewController *myContentViewController = nil;

    for(int i=0; i< 5; i++){
      myContentViewController = [[myContentViewController alloc] initWithNibName:@"ContentView" bundle:[NSBundle mainBundle]];

      frame = myContentViewController.view.frame;
      frame.origin.x=(frame.size.width*i);
      myContentViewController.view.frame=frame; 

      myContentViewController.theLabel.text =[NSString stringWithFormat:@"hello again..%d", i];
      [self.scrollView addSubview: myContentViewController.view];
      [myContentViewController release];
    }

追加するには: scrollviews contentView フレーム プロパティも確認します。

scrollView.contentSize = CGSizeMake(numberOfContentViews*contentViewWidth, contentViewHeight);

さらに追加するには:

textView をプログラムで viewDidload または viewDidAppear に追加して、それが機能するかどうかを確認してください。

あなたのコメントの後、別の推測をしなければならなかった場合、追加後にコード内の別の場所で textView を操作している可能性があると言えます。textView に影響する行をコメントアウトして、何が起こるかを確認してください。

于 2009-05-28T18:09:31.807 に答える