gpt4 book ai didi

ios - 无法正确执行方法调用

转载 作者:行者123 更新时间:2023-11-29 03:22:59 25 4
gpt4 key购买 nike

我正在处理我的应用程序的登录屏幕,但无法使其正常运行,并且在过去 2 小时内一直在尝试自己修复此问题。我已将登录屏幕的 View Controller 设置为两个协议(protocol)的委托(delegate)。其中一个协议(protocol)包含一个可选的 BOOL 方法,如果用户输入的用户名和密码不符合特定条件,该方法将停止登录过程。

协议(protocol)中声明的 bool 方法如下所示:

- (BOOL)logInViewController:(PFLogInViewController *)logInController     shouldBeginLogInWithUsername:(NSString *)username password:(NSString *)password;

无论如何,当用户输入并提交登录信息时,如果输入的用户名和密码的长度不等于0,则登录信息将提交到网络服务器。

但是,如果用户名和密码长度等于 0,则 BOOL 返回 NO,并且应该弹出一个标题为“缺少信息”的警报窗口,并显示一条消息““请确保您填写了所有信息”。信息!”

出于某种原因,当我在 iPhone 上进行测试并尝试使用空用户名和密码登录时,它仍然会提交到服务器。它不应该这样做。它应该触发 BOOL 方法并弹出正确的警报窗口。

我非常感谢您的帮助。

在我的登录 View Controller 的主文件中,您将看到我在 viewDidAppear 方法上方实现了 BOOL 方法,然后实际的方法调用包含在 viewDidAppear 方法内部。

这是我的登录屏幕的主文件:

#import "ParseLoginViewController.h"
#import <Parse/Parse.h>

@interface ParseLoginViewController () <PFLogInViewControllerDelegate, PFSignUpViewControllerDelegate>

@end

@implementation ParseLoginViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

- (BOOL)logInViewController:logInController shouldBeginLogInWithUsername:(NSString *)username password:(NSString *)password {
// Check if both fields are completed
if (username && password && username.length != 0 && password.length != 0) {
return YES; // Begin login process
}

[[[UIAlertView alloc] initWithTitle:@"Missing Information"
message:@"Make sure you fill out all of the information!"
delegate:nil
cancelButtonTitle:@"ok"
otherButtonTitles:nil] show];
return NO; // Interrupt login process
}

-(void)viewDidAppear
{
if (![PFUser currentUser]) { // No user logged in
// Create the log in view controller
PFLogInViewController *logInViewController = [[PFLogInViewController alloc] init];
[logInViewController setDelegate:self]; // Set ourselves as the delegate

// Create the sign up view controller
PFSignUpViewController *signUpViewController = [[PFSignUpViewController alloc] init];
[signUpViewController setDelegate:self]; // Set ourselves as the delegate

// Assign our sign up controller to be displayed from the login controller
[logInViewController setSignUpController:signUpViewController];

// Present the log in view controller
[self presentViewController:logInViewController animated:YES completion:NULL];

NSString *username = [[NSString alloc]init];
NSString *password = [[NSString alloc]init];
PFLogInViewController* logInController = [[PFLogInViewController alloc]init];

[self logInViewController:logInController shouldBeginLogInWithUsername:username password:password];

}

}

@end

最佳答案

我不确定您为什么使用 BOOL 方法。这样做的简单方法是检查用户名的长度,然后在向服务器发送 POST 请求之前检查密码的长度。因此,无论您在哪里调用发送发布请求的方法,只需检查用户名和密码即可。

例子:

-(void)someMethod
{
//whatever is already here...

if (username.length && password.length != 0)
{
[self callPOSTRequestMethod];
}
else
{
//create and show your alert...
}

如果所有内容都包含在一个 VC 中,应该就这么简单。

关于ios - 无法正确执行方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20846438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com