2012-02-17 8 views
0

ワッフルのタイトルは申し訳ありません。ビューとラベルを変更すると予期しない結果が発生する

私のiOSアプリに問題があります。私は、ビューコントローラを変更し、いくつかのラベルテキストを設定するには、このコードを使用します。

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
NSString *date = cell.textLabel.text; 
NSString *entry = cell.detailTextLabel.text; 

if (self.detailsViewController == nil) 
{ 
DiaryDetailsViewController *d = [[DiaryDetailsViewController alloc] 
             initWithNibName:@"DiaryDetailsViewController" 
             bundle:[NSBundle mainBundle]]; 
self.detailsViewController = d; 
} 
[self.detailsViewController setTexts:date entry:entry]; 
[self.navigationController pushViewController:self.detailsViewController 
                animated:YES]; 

setTextsのコードは次のとおりです。

-(void) setTexts:(NSString *)date entry:(NSString *)entry 
{ 
    [self.dateLabel setText:date]; 
    [self.entryLabel setText:entry]; 
}​ 

このコードは、ビューが変更された初めての仕事なので、すべてはありませんラベルは空白のままですが、次回のビューの変更時にラベルテキストを次に変更します。

私はここに何か間違っていると知っていますが、それを見つけることができないので、ここで何が起こっていますか?ビューが最初に開いたときにテキストが変更されないのはなぜですか?

ありがとうございます!

答えて

1

これは、DiaryDetailsViewControllerのビューがnilであるために発生します。ビューコントローラがnavContollerにプッシュされた後、ラベルを更新する必要があります。

DiaryDetailsViewController *d = [[DiaryDetailsViewController alloc] initWithText:cell.textLabel.text detailText:cell.detailTextLabel.text; 

[self.navigationController pushViewController:self.detailsViewController animated:YES]; 

...

2つの変数テキストと詳細

- (id)initWithText:(NSString *)text detailText:(NSString *)detail { 
... 
self.text = text; 
self.detailText = detail; 
} 

- (void)viewDidLoad { 

のプロパティを追加します....

[self.dateLabel setText:text]; 
    [self.entryLabel setText:detailText ]; 
} 
0

あなたはそれをあなたがする必要があるよりも、最初の時間を呼び出すとき最初に電話する

[self.detailsViewController setTexts:日付エントリ:エントリ];このメソッドは負荷を表示するので、そのオブジェクトは表示されませんが、2回目のオブジェクトIDは以前にメモリにロードされています。その呼び出しは適切なものを示しています。 [viewcontollerを押した後に呼び出す必要がある問題を解決するには