当我没有设置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;
}
答案 0 :(得分:2)
理论上你可能没有实例化你的笔尖,因为我没有在这个方法的任何地方看到它在上面创建它。如果没有,您可以尝试以下方法:
SomeView *yourView = [[SomeView alloc] initWithName:@"YourViewController" bundle:nil];
self.window.rootViewController = yourView;
[yourView release];
用适当的名称替换SomeView
和YourViewController
。
答案 1 :(得分:1)
检索BOOL
中NSUserDefaults
的方式不正确。您应该使用-(BOOL)boolForKey:(NSString *)defaultName;
。您还将geregistreerd
声明为指向BOOL
(BOOL *
)的指针,您应在其中声明BOOL
,这样可能会导致未定义的行为。
为了显示所需的视图控制器,请确保它们在NIB中正确初始化/分配或正确连接到用户界面。
答案 2 :(得分:0)
objectForKey
返回存储在plist中的字符串值。您需要将字符串转换为布尔值。
BOOL *geregistreerd = [[defaults objectForKey:@"geregistreerd"] boolValue];
答案 3 :(得分:0)
根据您的评论,您尚未初始化registreerView
变量。实际上应用程序委托中的viewController是通过nib文件初始化的。因此,初始化registreerView
变量。
其他部分应该是:
else {
RegistreerView *registreerView = [[RegistreerView alloc] initWibNibname:@"" bundle:nil];
self.registreerView = registreerView;
[registreerView release];
self.window.rootViewController = self.registreerView;
}
提供适当的笔尖名称。否则将其作为零。