例を使用してプロトコルとデリゲートを研究しています!この例を再作成しようとすると、この条件が尊重されていないことに気付きます。
if([delegate replysToSelector:@selector(amountEntered :)]){blabla}
間違いはどこにありますか?スクリプト:
ファーストビュー.h
#import <UIKit/UIKit.h>
#import "EnterAmountViewController.h"
@interface DelegateExampleViewController : UIViewController <EnterAmountDelegate>{
IBOutlet UILabel *amountLabel;
}
-(IBAction)changeAmountPressed;
@end
ファーストビュー.m
#import "DelegateExampleViewController.h"
@implementation DelegateExampleViewController
-(IBAction)changeAmountPressed
{
EnterAmountViewController * enterAmountVC = [[EnterAmountViewController alloc]init];
enterAmountVC.delegate = self;
}
-(void)amountEntered:(NSInteger)amount
{
amountLabel.text = [NSString stringWithFormat:@"%i" , amount];
}
@end
セカンドビュー.h
#import <UIKit/UIKit.h>
@protocol EnterAmountDelegate <NSObject>
-(void)amountEntered:(NSInteger)amount;
@end
@interface EnterAmountViewController : UIViewController {
IBOutlet UITextField *amountTextField;
id<EnterAmountDelegate> delegate;
}
-(IBAction)savePressed;
@property(nonatomic,retain) id<EnterAmountDelegate> delegate;
@end
セカンドビュー.m
#import "EnterAmountViewController.h"
#import "DelegateExampleViewController.h"
@implementation EnterAmountViewController
@synthesize delegate;
- (void)viewDidLoad {
[super viewDidLoad];
amountTextField.text = @"";
[amountTextField becomeFirstResponder];
}
-(IBAction)savePressed
{
if([delegate respondsToSelector:@selector(amountEntered:)])
{
[delegate amountEntered:[amountTextField.text intValue]];
NSLog(@"rugg");
}
}
@end
前もって感謝します!