Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone NSUserDefaults问题(启动应用程序时,如何在需要时打开其他viewController)_Iphone_Ios_Nsuserdefaults_Uiapplicationdelegate - Fatal编程技术网

Iphone NSUserDefaults问题(启动应用程序时,如何在需要时打开其他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

当NSUserDefaults中的BOOL未设置时,我尝试启动另一个ViewController。。 加载“RegistreerView”时,屏幕是否保持白色?我做错了什么?启动应用程序时如何启动其他ViewController

我使用以下代码:

- (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;屏幕保持白色