Iphone NSUserDefaults问题(启动应用程序时,如何在需要时打开其他viewController)
当NSUserDefaults中的BOOL未设置时,我尝试启动另一个ViewController。。 加载“RegistreerView”时,屏幕是否保持白色?我做错了什么?启动应用程序时如何启动其他ViewController 我使用以下代码:Iphone NSUserDefaults问题(启动应用程序时,如何在需要时打开其他viewController),iphone,ios,nsuserdefaults,uiapplicationdelegate,Iphone,Ios,Nsuserdefaults,Uiapplicationdelegate,当NSUserDefaults中的BOOL未设置时,我尝试启动另一个ViewController。。 加载“RegistreerView”时,屏幕是否保持白色?我做错了什么?启动应用程序时如何启动其他ViewController 我使用以下代码: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSUserDefault
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
BOOL *geregistreerd = [defaults objectForKey:@"geregistreerd"];
if(geregistreerd){
self.window.rootViewController = self.viewController;
} else {
self.window.rootViewController = self.registreerView;
}
[self.window makeKeyAndVisible];
return YES;
}
objectForKey
返回plist中存储的字符串值。您需要将字符串转换为布尔值
BOOL *geregistreerd = [[defaults objectForKey:@"geregistreerd"] boolValue];
根据您的评论,您尚未初始化
registererview
变量。实际上,应用程序委托中的viewController是通过nib文件初始化的。因此,初始化registererview
变量
其他部分应为:
else {
RegistreerView *registreerView = [[RegistreerView alloc] initWibNibname:@"" bundle:nil];
self.registreerView = registreerView;
[registreerView release];
self.window.rootViewController = self.registreerView;
}
给出适当的nib名称。否则将其设为零。在
NSUserDefaults
中检索BOOL
的方式不正确。您应该使用-(BOOL)boolforky:(NSString*)defaultName代码>。您还声明了geregistererd
作为指向BOOL
(BOOL*
)的指针,您应该在其中声明BOOL
,因此这可能会导致未定义的行为。
为了显示所需的视图控制器,请确保它们已正确初始化/分配,或已正确连接到NIB中的用户界面。理论上,您可能不会实例化NIB,因为我在上面的方法中没有看到创建NIB的任何地方。如果没有,您可以尝试以下操作:
SomeView *yourView = [[SomeView alloc] initWithName:@"YourViewController" bundle:nil];
self.window.rootViewController = yourView;
[yourView release];
用适当的名称替换SomeView
和YourViewController
。是否在此代码之前实例化了ReisterView
?对不起,我是xcode新手,所以我不太清楚你的意思。在委托头文件中,我将其设置为属性。我确实做到了。就像我创建一个新项目时在他的viewController中初始化一个标准的委托类一样..好的,但是这不能解决我的问题,删除整个if/else语句并执行self.window.rootViewController=self.registererview;屏幕保持白色