1

我试图在 stackoverflow 上复制一些帖子,用于传递数据并使用 2 个视图控制器进行调用,但没有成功。

所以我有我的ViewController (1st)EditableViewController (2nd)

当我在EditableViewController (2nd)中时,我单击一个按钮,该按钮使用SendTextToViewController方法触发 IBAction 。之后,我期待在我的ViewController(第一个)中运行方法didReceiveMessage ,并向我展示带有 NSLog 的“BANANAS”。

最终,我想将数据从我的第二个控制器发送到第一个控制器

我很难理解这个代表的事情。我已经阅读了十几个教程、视频和文档,试图弄清楚这一点。我想我快到了,但似乎无法弄清楚为什么这不起作用。

任何人都可以帮助我吗?代码如下。

谢谢!

// 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

// 可编辑视图控制器.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

// 可编辑视图控制器.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 回答