presentModalViewController в viewDidLoad на первом запуске

Я искал вокруг, но к сожалению не имел никакой удачи.

Мое приложение требует, чтобы пользователь подписался в первый раз, когда он запускает приложение. Я знаю, как определить первый запуск (использующий NSUserDefaults), но каждый раз, когда я пытаюсь представить модальное, содержащее знак в/, подписывают средства управления, ничего не происходит.

Вот то, что я имею:

-(void)viewDidLoad {
    [self showLogin];
    [super viewDidLoad];
}

-(void)showLogin {    
    FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"AccountView" bundle:nil];
    controller.delegate = self;

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

    [controller release];
}

Однако ничего не происходит. Основное представление просто загружается как нормальное. Любая справка значительно ценится.

- Giles

10
задан Giles Van Gruisen 4 January 2010 в 05:02
поделиться

4 ответа

.

[UPDATE]

Исправлено простым использованием...

-(void)viewDidAppear:(BOOL)animated 
{

}

вместо

-(void)viewDidLoad
{

}

Спасибо в любом случае!

/idiocy

13
ответ дан 3 December 2019 в 17:59
поделиться

У меня была такая же проблема и закончилась, используя ViewDidAppear. Единственная проблема с подходом ViewDiDiDAppear заключается в том, что если вы загружаете другие UIViewControllers сверху, то перезапустите базу, то код установки вызывается снова и снова. Я заканчивался, чтобы добавить логическое значение (инициализированное для да) на этот контроллер этого просмотра и проверьте это значение, прежде чем решить, что делать. Надеюсь, это поможет кому-то ...

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

    if(justLaunched)
    {
        justLaunched = NO;
        if(settingsFileExists)
        {
            [self displayMainView];
        }
        else
        {
            [self displaySetupView];
        }
    }
}
7
ответ дан 3 December 2019 в 17:59
поделиться

И вызовов это в ViewDidload не очень безопасна: последовательность ViewDidload / ViewDidUnload может возникать во время выполнения, когда iPhone должен выпустить несколько просмотров Для того, чтобы вернуть некоторую бесплатную память.

Побочный эффект такой последовательности заключался в том, что ваш контроллер входа будет показан ...

Как вы сказали ViewDiDiDAppear выглядит лучше, но не просто положить его в конце appdidfinedlauching Делегат вашего UIApplication ?

0
ответ дан 3 December 2019 в 17:59
поделиться

Как насчет использования performSelector: withObject: afterDelay в функции viewDidLoad? Вот как я это делаю, с небольшой задержкой в ​​0,1 с.

2
ответ дан 3 December 2019 в 17:59
поделиться