2009-05-28 8 views
0

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

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が各ページにあることを発見しました。スクロールビューが垂直にスワイプすると、テキストが表示されます。しかし、私はすべてのスクロールビューの最初のものの後にそれを行う必要があります。

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

答えて

1

試行:

[textView setNeedsDisplay];


オリジナル回答

あなたは違ったのTextViewに対処する必要はありません。

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

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

その他の問題は、ループ中に各ビューのフレームを変更しないことです。それらはすべて{0,0}の原点を持ちます。あなたのコードから見ることができます。これはあなたの意見が隠されている理由かもしれません。

最後に、スタイルノートでは、私はView Controller 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); 

以上を追加するには、次へのviewDidLoadまたはviewDidAppearで、プログラムでのTextViewを追加

てみてくださいそれが動作するかどうかを確認します。

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

+0

NotDidLoad、loadView。 viewDidLoadを呼び出すことは時々あるが、loadView(AFAIK)ではできない。 また、スクロールビューのcontentViewサイズを (numberOfContentViews * contentViewWidth)に設定しましたか? –

+0

ありがとうございます。 viewDidLoadの呼び出しは、テキストビューが動作するまで一時的です。それ以外の場合は、iBOutlet以外のプロパティを作成してからviewDidLoadに割り当てる必要があります。テキストビューは、コードの最初のビューの後に表示されません。ラベルはまだうまく表示されます。また、UIWebViewとUIScrollViewにラベルを追加することもできます。すべてのページに表示されます。 – 4thSpace

+0

(numberOfContentViews * contentViewWidth)の質問にははいです。コンテンツビューは正常に表示されています。私は各コーナーにコントロールを配置し、それらを見ることができます。私はまた、中間にテキストビューを入れてみましたが、最初のビューの後で消えます。 – 4thSpace

関連する問題