私は2つのView Controller(view1とview2(say))を持っています。view1 には、ユーザー名とパスワードを入力するためのテキスト フィールドと、ログイン ボタンがあります。ログインを押すと、ユーザーはview2にプッシュできるはずです(ユーザー名とパスワードがデータベースから確認された場合)。ログインがクリックされたときに呼び出される次のメソッドを追加しました。
-(IBAction)clickButton:(id)sender
{ const char *dbpath = [mDatabasePath UTF8String];
sqlite3_stmt *statement;
if (sqlite3_open(dbpath, &mDiary) == SQLITE_OK)
{
NSString *querySQL = [NSString stringWithFormat: @"SELECT *FROM USERDETAIL"];
const char *query_stmt = [querySQL UTF8String];
if (sqlite3_prepare_v2(mDiary,
query_stmt, -1, &statement, NULL) == SQLITE_OK)
{
if (sqlite3_step(statement) == SQLITE_ROW)
{
Gusr = [[NSString alloc]
initWithUTF8String:
(const char *) sqlite3_column_text(statement, 0)];
Gpass = [[NSString alloc]
initWithUTF8String:
(const char *) sqlite3_column_text(statement, 1)];
NSLog(@"%@ %@",Gusr,Gpass);
NSLog(@"%@ %@",mUserName.text,mPassword.text);
if (!([mUserName.text isEqualToString:Gusr] && [mPassword.text isEqualToString:Gpass])){
NSLog(@"Invalid credentials");
mUserName.text = @"";
mPassword.text = @"";
// [self performSegueWithIdentifier:@"Login" sender:self];
}else {
}
}
}
sqlite3_finalize(statement);
}
sqlite3_close(mDiary);
}
問題は、ユーザーが任意の資格情報でログインできることです。Gusr と Gpass がログに出力されます。また、おそらくここで、view1 と view2 が同じカスタム クラスを持っていることに言及する必要があります (私はストーリーボードを使用しています)。
これをelse部分に追加するとうまくいきます:
VIewControllerName *obj = [storyboard instantiateViewControllerWithIdentifier:@"ViewController_storyBoardId"];
[self.navigationController pushViewController:obj animated:YES];
クマールに感謝.. :)