2

我使用 Parse 作为我的 iOS 应用程序的后端,并且我还使用本机PFLogInViewController&PFSignUpViewController来完成登录和注册任务。

问题?

我在整个应用程序中自定义了 UIAlertViews 的外观,结果证明 Parse 在其本机 PFLogInViewController 和 PFSignUpViewController 实现中对 UIAlertViews 进行了硬编码调用。此警报视图的一个示例是由于用户名和密码组合不正确而导致登录失败。

我想知道如何继承PFLogInViewController&PFSignUpViewController并实现我自己的自定义 UIAlertView 类。

编辑——有什么想法吗?

4

2 回答 2

1

PFLogInViewController不提供改变这种行为的钩子。您可能想要构建自己的自定义PFLogInViewController子类并覆盖登录失败时显示警报视图的方法。

由于 PFLogInViewController 的代码已经开源,根据它显示警报视图的方法是_loginDidFailWithError

https://github.com/ParsePlatform/ParseUI-iOS/blob/master/ParseUI/Classes/LogInViewController/PFLogInViewController.m#L382-L390

- (void)_loginDidFailWithError:(NSError *)error {
    if (_delegateExistingMethods.didFailToLogIn) {
        [_delegate logInViewController:self didFailToLogInWithError:error];
    }
    [[NSNotificationCenter defaultCenter] postNotificationName:PFLogInFailureNotification object:self];

    NSString *title = NSLocalizedString(@"Login Error", @"Login error alert title in PFLogInViewController");
    [PFUIAlertView showAlertViewWithTitle:title error:error];
}

例如,如果您喜欢以下内容,则可以在登录失败时不显示警报。定义MYLogInViewController为的子类PFLogInViewController

@interface MYLogInViewController : PFLogInViewController

@end

@implementation MYLogInViewController

- (void)_loginDidFailWithError:(NSError *)error {
    if ([self.delegate respondsToSelector:@selector(logInViewController:didFailToLogInWithError:)]) {
        [self.delegate logInViewController:self didFailToLogInWithError:error];
    }
    [[NSNotificationCenter defaultCenter] postNotificationName:PFLogInFailureNotification object:self];

    NSString *title = NSLocalizedString(@"Login Error", @"Login error alert title in PFLogInViewController");
    //
    // Implement to display your custom alert view
    //
}

@end

并改用它PFLogInViewController

MYLogInViewController *logInViewController = [[MYLogInViewController alloc] init];
logInViewController.delegate = self;
[self presentViewController:logInViewController animated:YES completion:nil];
于 2015-01-31T19:19:07.347 回答
0

请参阅此处:https ://parse.com/tutorials/login-and-signup-views在“完全自定义的子类化”下。

于 2013-03-20T22:35:56.943 回答