我一直在寻找,但遗憾的是没有运气。
我的应用要求用户在首次启动应用时登录/注册。我知道如何确定首次启动(使用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
答案 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
代表的末尾?