2011-06-19 4 views
1

UITextViewを含むDebugViewControllerというUIViewControllerと、NSStringをUITextViewに書き込んで表示するために使用されるdebugPrintというパブリックメソッドがあります。ビューがロードされる前にビューコントローラメソッドを使用するヘルプ

UIViewControllerを開く前にUITextViewに書き込むことができます。これを開くと、以前に書き込まれたテキストが表示されるようになりますか?私の親ビューコントローラで

のviewDidLoadメソッド

debugViewController = [[DebugViewController alloc] initWithNibName:@"DebugView" bundle:nil]; 

を次のように、私は次のように私は、その後

[debugViewController debugPrint:@"viewDidLoad"]; 

そして、いくつかの時間後、私は次の呼び出しdebugPrintを呼び出すDebugViewControllerにinitWithNibNameを呼んでいますdebugViewControllerを開くには

debugViewController.delegate = self; 
debugViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
[self presentModalViewController:debugViewController animated:YES]; 

ただし、以前に書かれたすべてのテキストが欠落しています。

ユーザーに表示されるビューコントローラの前に、View Controllerメソッドをどのように使用できるか教えてください。何をやっている

おかげで、

JustinP

+0

おそらくあなたのtextviewはinitilizedされていません。これは、nibからのawakeがまだ呼び出されていないためです。 – Daniel

+0

Danielに感謝します。 – JustinP

答えて

0

は少し非標準です。その危険性はいつものように、あなたがやっていることを専門家が本当に把握していなければ、すぐに自分を難易度で見つけられるということです。

に設定する前に、表示がユーザーに表示されるようにするには、viewWillAppearメソッドで行うのが最善の方法です。 viewが一度ロードされて何度も表示される可能性があるので、viewDidLoadではなく、それを入れてください。配置場所は、データが外観から外観に変わるかどうかによって異なります。

データがかなり静的で変更されない場合は、viewDidLoadメソッドを使用してください。

NSString *myText; 

は、initの後にあることを設定します:あなたはのは、ビューコントローラにIVARを持つことにより、最初のステップをやらせる、viewWillAppearオプションのために行くだろうと仮定すると

その後、
debugViewController = [[DebugViewController alloc] initWithNibName:@"DebugView" bundle:nil]; 
debugViewController.myText = @"My text here"; 

を、

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

    myTextView.text = myText; 
} 

ビュー:debugViewControllerviewWillAppear方法でコントローラーのライフサイクルは、View Controller Programming Guide for iOSからわかるように複雑です。だから、あなたが正当な理由がなければ、抵抗が最少の道から迷子にならないといいでしょう。それは、時には実験で学ぶのが最善の方法だと言っていました。

関連する問題