首次启动时viewDidLoad中的presentModalViewController

时间:2010-01-04 05:02:22

标签: iphone objective-c 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

4 个答案:

答案 0 :(得分:13)

  

[UPDATE]

只需使用..

即可
-(void)viewDidAppear:(BOOL)animated 
{

}

而不是

-(void)viewDidLoad
{

}

非常感谢!

/白痴

答案 1 :(得分:7)

我遇到了同样的问题,最后也使用了viewDidAppear。 viewDidAppear方法的唯一问题是,如果你在顶部加载其他UIViewControllers,然后重新显示基础,那么你的设置代码会被反复调用。我最终必须向此视图控制器添加一个布尔值(初始化为YES)并在决定要执行的操作之前检查该值。希望这有助于某人...

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

    if(justLaunched)
    {
        justLaunched = NO;
        if(settingsFileExists)
        {
            [self displayMainView];
        }
        else
        {
            [self displaySetupView];
        }
    }
}

答案 2 :(得分:2)

如何在viewDidLoad函数中使用performSelector:withObject:afterDelay?这就是我的做法,短暂延迟0.1秒。

答案 3 :(得分:0)

viewDidLoad中调用它并不是很安全:当iPhone需要释放一些视图以便返回某些视图时,序列viewDidLoad / viewDidUnload可以在运行时发生自由记忆。

此类序列的副作用是将显示您的登录控制器......

正如您所说viewDidAppear看起来更好,但不能简单地将其放在appDidFinishedLaunching UIApplication代表的末尾?