質問のタイトルを前もってお詫び申し上げます。自分の問題を簡潔に説明する方法がよくわかりません。
設定したこのデリゲートメソッドに問題があります。簡単なログイン画面をモーダルに表示しようとしています。私の問題は、ログインビューを閉じた後に呼び出されるメソッドを取得することです。
具体的には、Xcodeはこれをログに記録します。
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[LoginViewController login:]: unrecognized selector sent to instance [memory address]'
LoginViewController.h
#import <UIKit/UIKit.h>
@protocol LoginViewControllerProtocol;
@interface LoginViewController : UIViewController
@property (weak, nonatomic) IBOutlet UITextField *userNameTextField;
@property (weak, nonatomic) IBOutlet UITextField *userPasswordTextField;
@property (weak, nonatomic) IBOutlet UIButton *loginButton;
@property (nonatomic, weak) NSObject<LoginViewControllerProtocol> *loginViewControllerDelegate;
@end
@protocol LoginViewControllerProtocol <NSObject>
- (void)loginViewController:(LoginViewController *)controller didLogin:(NSString *)userName;
@end
LoginViewController.m
- (IBAction)login
{
if ([self.loginViewControllerDelegate respondsToSelector:@selector(loginViewController:didLogin:)]) {
[self.loginViewControllerDelegate loginViewController:self didLogin:self.userNameTextField.text];
}
}
デリゲート:(TestViewController.m)
- (void)loginViewController:(LoginViewController *)controller didLogin:(NSString *)userName
{
[self dismissModalViewControllerAnimated: YES];
didLogIn = YES;
}
デリゲートメソッドが却下されたビューに送り返される理由がわかりません。
どんな助けでも大歓迎です!
編集:これを省略してしまったことをお詫びします。これは、LoginViewControllerを呼び出すビューコントローラーで発生します。デリゲートメソッドもここにあります。
TestViewController.m
if (!didLogIn) {
//launch login view modally
LoginViewController* loginController = [[LoginViewController alloc] initWithNibName: @"LoginViewController" bundle: nil];
loginController.loginViewControllerDelegate = self;
loginController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
loginController.modalPresentationStyle = UIModalPresentationFormSheet;
NSLog(@"LoginViewControllerDelegate: %@", self.description);
NSLog(@"LoginViewController: %@", loginController.description);
[self presentModalViewController:loginController animated: YES];
TestViewController.h
#import <UIKit/UIKit.h>
#import "LoginViewController.h"
@class NuanceGuidHandler;
@interface TestViewController : UIViewController <LoginViewControllerProtocol>
@property (weak, nonatomic) IBOutlet UILabel *partnerGuidLabel;
@property (weak, nonatomic) IBOutlet UILabel *userGuidLabel;
@property (strong, nonatomic) NuanceGuidHandler *nuanceGuidHandler;
@property (nonatomic) BOOL didLogIn;
@end