0

UIViewControllerに移動するtableViewControllerがあります。indexPath.rowの値を保存するために、整数を使用し、その整数に基づいてUIViewControllerでアクションが実行されます。問題は、戻るボタンを押してテーブルの別のインデックスを選択すると、UIViewContollerに移動しますが、実行されるアクションが最初のアクションであるということです。ViewDidLoadは2回目に呼び出されません。これが私のコードです。

TableViewコード:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (!self.iaRecipieViewController) {
        self.iaRecipieViewController = [[[iRecipieViewController alloc] initWithNibName:@"iRecipieViewController" bundle:nil] autorelease];
    }
    if (indexPath.row == 0) {
        self.iaRecipieViewController.myLableArray =labelSoupArray ;
    }

    if (indexPath.row == 1) {
        self.iaRecipieViewController.myLableArray =labelSoupArray ;
    }

    if (indexPath.row == 2) {
        self.iaRecipieViewController.myLableArray =labelSoupArray ;
    }
    // custom string is an NSinteger
    self.iaRecipieViewController.customString = indexPath.row;
    NSLog(@"  int  %i",self.iaRecipieViewController.customString);
    NSLog(@"index path %i ", indexPath.row) ;

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

    [detailTable reloadData];
}

UIViewControllerコード。

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

    myLabel.text = [self.myLableArray objectAtIndex:customString];
}
4

3 に答える 3

6

使用するviewWillAppear:(BOOL)animated

-(void)viewWillAppear:(BOOL)animated {

  [super viewWillAppear:animated];
  myLabel.text = [self.myLableArray objectAtIndex:customString];

}

viewDidLoad は、ビューがロードされたときにのみ呼び出されます。新しい ViewController をプッシュしてから削除しても、ビューが強制的にリロードされることはありません。viewWillAppear はビューがレンダリングされる前に呼び出されるため、プライマリ ビューになるたびに何かを行う機会があります。

于 2013-03-04T21:11:12.717 に答える
2

方法

(void)viewDidLoad

ビューがロードされるときに実行されます。ビューが既に読み込まれている場合 (まだメモリ内にあることを意味します)、画面から消えている可能性があります。しかし、それは記憶がなくなったという意味ではありません。ビューをメモリにロードする必要があるときに再実行するだけです。

于 2013-03-05T03:25:09.917 に答える
2

ViewDidLoad は、ビューがインスタンス化されるときに 1 回だけ呼び出されます。コードに基づいて、このビューを行ったり来たりしているため、ビューは毎回インスタンス化 (ロード) されるのではなく、一度ロードされたので、実際に行ったり来たりするとビューが消えて表示されます。見る。

コードを ViewWillAppear または ViewDidAppear に入れます。

于 2013-03-04T21:10:50.860 に答える