データを渡し、2 つのビュー コントローラーで呼び出しを行うために、stackoverflow でいくつかの投稿を複製しようとしましたが、成功しませんでした。
だから私はViewController(1番目)とEditableViewController(2番目)を持っています
EditableViewController (2nd)にいるとき、メソッドSendTextToViewControllerで IBAction をトリガーする Button をクリックします。その後、メソッドdidReceiveMessageがViewController (1st)で実行され、 NSLogで「BANANAS」が表示されることを期待していました。
最終的に、2 番目の Controller から First Controller にデータを送信したいと考えています。
このデリゲートのことを理解するのに苦労しています。そして、これを理解しようとするチュートリアル、ビデオ、ドキュメントを多数読みました。私はほとんどそこにいると思いますが、なぜこれが機能していないのか分かりません。
誰でも私を助けてもらえますか?コードは以下です。
ありがとうございました!
// ViewController.h
#import <UIKit/UIKit.h>
@protocol ViewControllerDelegate <NSObject>
-(void)didReceiveMessage:(NSString *)string;
@end
@interface ViewController : UIViewController <ViewControllerDelegate>;
@end
// ViewController.m
#import "ViewController.h"
@implementation ViewController
-(void)didReceiveMessage:(NSString *)string{
NSLog(@"BANANAS");
}
@end
// EditableViewController.h
#import <UIKit/UIKit.h>
@protocol ViewControllerDelegate;
@interface EditableViewController : UIViewController
@property (nonatomic, weak) id<ViewControllerDelegate> delegate;
@property (nonatomic, weak) IBOutlet UITextField *TextField;
@property (nonatomic, weak) IBOutlet UIButton *SendTextToViewController;
- (IBAction)SendTextToViewController:(id)sender;
@end
// EditableViewController.m
#import "EditableViewController.h"
#import "ViewController.h"
@implementation EditableViewController
@synthesize delegate;
@synthesize TextField;
@synthesize SendTextToViewController;
- (IBAction)SendTextToViewController:(id)sender {
[delegate didReceiveMessage:TextField.text];
}
- (void)viewDidUnload {
[self setTextField:nil];
[super viewDidUnload];
}
@end