10

我一直在四处寻找,但不幸的是没有运气。

我的应用程序要求用户在首次启动应用程序时登录/注册。我知道如何确定首次启动(使用 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];
}

然而,什么也没有发生。主视图正常加载。任何帮助是极大的赞赏。

-贾尔斯

4

4 回答 4

13

[更新]

只需使用..即可修复

-(void)viewDidAppear:(BOOL)animated 
{

}

代替

-(void)viewDidLoad
{

}

不管怎么说,还是要谢谢你!

/白痴

于 2010-01-04T05:10:16.113 回答
8

我遇到了同样的问题,最终也使用了 viewDidAppear。viewDidAppear 方法的唯一问题是,如果您在顶部加载其他 UIViewController,然后重新显示基础,那么您的设置代码会被一遍又一遍地调用。我最终不得不向这个视图控制器添加一个布尔值(初始化为 YES),并在决定做什么之前检查该值。希望这可以帮助某人...

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

    if(justLaunched)
    {
        justLaunched = NO;
        if(settingsFileExists)
        {
            [self displayMainView];
        }
        else
        {
            [self displaySetupView];
        }
    }
}
于 2010-01-19T11:25:10.787 回答
2

在 viewDidLoad 函数中使用 performSelector:withObject:afterDelay 怎么样?我就是这样做的,有0.1s的短暂延迟。

于 2010-05-31T09:53:07.917 回答
0

并且在其中调用它viewDidLoad并不是很安全:当 iPhone 需要释放一些视图以取回一些空闲内存时,序列viewDidLoad/可能会在运行时发生。viewDidUnload

这种序列的副作用是您的登录控制器将被显示......

正如你所说的看起来更好但不是简单地把它放在你的代表viewDidAppear的末尾?appDidFinishedLaunchingUIApplication

于 2010-01-19T16:06:30.840 回答