サーバーからほとんどすべてのデータをフェッチするWebベースのアプリケーションがあります。ログインビューで、いくつかのユーザー情報を入力し、サーバーへのGETリクエストを作成します(これらのことはと呼ばれるメソッドで行いますloginMethod
)。入力した値がデータベース内の値と一致する場合は、詳細データを返し、ユーザー情報を保存しNSUserDefaults
てプッシュします。新しいビューコントローラー(私のメインビュー)。ここまでは何でも構いませんが、デフォルトにデータがない場合(つまり、初めての場合)、AppDelegateクラスにコントロールを追加したいのですが、保存されたデータがある場合は、ログインビューコントローラーを表示したいです。メインメニューを表示します。私はいくつかの方法を試しましたが、いつも失敗しました。これが私のコードです:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//uName, serve1r and pasword are my user defaults
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
uName = [defaults objectForKey:@"kUsername1"];
serve1r = [defaults objectForKey:@"kServer1"];
pasword = [defaults objectForKey:@"kPassword1"];
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
if([uName isEqualToString:@""]){
//BNT_DetailViewController is my login class
detailViewController1 = [[[BNT_DetailViewController alloc] initWithNibName:@"BNT_DetailViewController" bundle:nil] autorelease];
navigationController = [[[UINavigationController alloc] initWithRootViewController:detailViewController1] autorelease];
self.window.rootViewController = self.navigationController;
[self.window makeKeyAndVisible];
application.applicationIconBadgeNumber=0;}
else{
//controller is an instance of MainMenu class
controller = [[[MainMenu alloc] initWithNibName:@"MainMenu" bundle:nil] autorelease];
navigationController = [[[UINavigationController alloc] initWithRootViewController:controller] autorelease];
self.window.rootViewController = self.navigationController;
[self.window makeKeyAndVisible];
application.applicationIconBadgeNumber=0;
}
return YES;
}
編集クラッシュしませんが、黒い画面が表示されます。値の保存に問題はありません