2

... 私は推測する。これは状況です:

ここでは、ビューコントローラで、ボットンを押して別のビューに移動できる簡単な方法を示します。

- (IBAction)actionNext:(UIButton *)sender {

    self.numeriUtiliListaViewController = [[ALCNumeriUtiliListaViewController alloc] init];
    [self.numeriUtiliListaViewController.view setTag:[sender tag]];
    [self.delegate vai:self.numeriUtiliListaViewController title:@"Numeri Utili"];
    }

デリゲートの方法は次のとおりです。

- (void)vai:(id)view title:(NSString *)title
{
    ALCParentViewController *viewController = (ALCParentViewController *)view;  
    viewController.delegate = self;
    NSLog(@"tag: %d",[viewController.view tag]);

    [self.myNavigationController pushViewController:viewController animated:YES];
}

このシステムはうまく機能しますが、この最後のメソッドにログインしたタグだけが正しく印刷されていますが、ナビゲーションコントローラーによって読み込まれたビューで、viewDidLoadの値を取得しようとすると、 0。

何か案は?

前もって感謝します

アップデート12013-01-30:

ナビゲーションコントローラーにプッシュされたビューコントローラーのviewWilAppearメソッドでタグを印刷しようとすると、正しい値が表示されます...なぜですか?わからない

4

1 に答える 1

2

ここで起こっていることは、actionNextメソッドで、:self.numeriUtiliListaViewController.viewを使用してviewControllerのビューのタグを設定しているときに、viewControllerのビュープロパティにアクセスするとすぐに、viewControllerでviewDidLoadメソッドが呼び出されることです。したがって、setTag関数が実行される前でも、viewDidLoadはすでに実行されており、tag = 0と表示されています。ただし、viewWillAppear / viewDidAppearメソッドは、実際のビューが表示され、それまでにsetTagが実行された場合にのみ呼び出されるため、正しく表示されます。価値。意味がありますか?お役に立てれば

于 2013-01-30T19:11:40.713 に答える