Iphone 在viewdidload方法中切换视图控制器
我正在开发一个iphone应用程序,我想通过检查userdefaults来切换视图控制器。因此,我做了以下工作:Iphone 在viewdidload方法中切换视图控制器,iphone,objective-c,nsuserdefaults,viewcontroller,Iphone,Objective C,Nsuserdefaults,Viewcontroller,我正在开发一个iphone应用程序,我想通过检查userdefaults来切换视图控制器。因此,我做了以下工作: NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; if ([defaults objectForKey:@"keyString"] != nil) { nextViewController *redirectView = [[nextViewController alloc] initWith
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"keyString"] != nil) {
nextViewController *redirectView = [[nextViewController alloc] initWithNibName:@"nextViewController" bundle:[NSBundle mainBundle]];
self.nextView = redirectView;
[self presentModalViewController:self.nextView animated:YES];
} else {
[defaults setObject:@"newValue" forKey:@"keyString"];
}
它不起作用。。这条路对吗???如果没有,谁能告诉我怎么做 不要将重定向视图分配给self.nextView。像这样直接传过来
[self presentModalViewController:redirectView animated:YES];
添加行
[self.view addSubview:nextView];
而不是
[self presentModalViewController:self.nextView animated:YES];
}您是否使用导航控制器?请在问题中提供更多信息。“不工作”是什么意思?如果条件未变为真,或者条件为真但视图未显示?@Aman否。。我正在使用视图控制器…@taskinoor:对不起。。事实上,如果情况良好。但是视图没有切换到下一个视图…它在控制台中显示异常,如下所示:[nextViewController superview]:未识别的选择器已发送到实例是否将nextview作为.h中的属性?这给了你什么例外是的,我已经在.h文件中声明了下一个视图。。。实际上,当我在其他操作中使用重定向时,它工作正常(当单击按钮时发生),但在viewdidload方法中它不工作…非常感谢。。我终于让它工作了。。我把它放在ApplicationIDFinishLaunching方法中并添加子视图。。。非常感谢……你的下一个观点是什么?声明的位置?netxView是我在接口(.h文件)中为nextViewController创建的对象…那么redirectView也是同一个nextViewController的对象。为什么需要创建同一类的两个对象?试试我现在发布的答案。@iphoneFreak:我试过你的解决方案,但没用。。。实际上,切换在其他操作中正常工作,但在viewdidload操作中不正常。。我的疑问是我们能否在viewdidload方法中切换视图???在应用程序即将启动时,您是否正在执行此操作?如果是,则在appDelegate的ApplicationIDFinishLaunching方法中执行此操作。
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"keyString"] != nil)
{ nextViewController *redirectView = [[nextViewController alloc]init];
[self presentModalViewController:redirectView animated:YES];
redirectView=nil;
}
else {
[defaults setObject:@"newValue" forKey:@"keyString"];