1

データを渡し、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
4

1 に答える 1

3

あなたは逆にそれをしました...これをしてください...

  • EditableViewControllerDelegate を作成し、
  • ViewController は EditableViewControllerDelegate プロトコルに準拠する必要があります。
  • ViewController インスタンスを EditableViewController インスタンスのデリゲートとして割り当てます
于 2012-07-22T14:53:05.667 に答える