ViewController如何知道它专注于iOS?像"viewDidLoad"

Ric*_*kON 3 xcode viewdidload viewcontroller navigationcontroller ios

我有一个NavigationController,其中一个选项卡应该加载一个ViewController.

这个ViewController(1)加载到"viewDidLoad"时会做一些事情,然后推送一个新的ViewController(2).问题是,在ViewController(1)已经通过viewDidLoad之后,它将不会再次通过它,除非重新启动应用程序.

你们可以请一个聪明的方法来参考吗?

这就是我真正在做的事情:

- (void)viewDidLoad
{
    // Keep track of cash using NSUserDefaults
    BOOL dreceived[63];
    int rightData;

    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    //Load cash switches
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    NSData *data = [prefs objectForKey:@"dreceived"];
    memcpy(&dreceived, data.bytes, data.length);

    for(int n = 72; n >= 1; n = n - 1)
    {
        if(dreceived[n-1]==1)
        {
            rightData = n;            

        }
    }
    NSLog(@"Right Data %d", rightData);

    CashItem *c = [cashflow objectAtIndex:rightData];

    // Go for details
    CashDetailedViewController *cdetail = [[[CashDetailedViewController alloc] init] autorelease];
    cdetail.cash = c;

    cdetail.navigationItem.hidesBackButton = YES;
    [self.navigationController pushViewController:cdetail animated:YES];

}
Run Code Online (Sandbox Code Playgroud)

问题是,这个代码永远不会被再次调用.如果我触摸标签两次,则会显示一个空白视图(原始xib视图).

谢谢!

Cra*_*ens 6

这听起来像你想要使用viewWillAppear.每当您的视图控制器即将在屏幕上时调用它.

虽然根据您发布的内容,您可能想重新考虑一下您的工作.拥有一个立即呈现另一个视图控制器的视图控制器应该会导致令人困惑的用户体验.