繁体   English   中英

使用Objective-C(iOS)中的代理调用方法

[英]Calling A Method With A Delegate in Objective-C (iOS)

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

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

当我在我的EditableViewController(第二个)中时 ,我单击一个按钮,该方法使用方法SendTextToViewController触发IBAction。 之后,我期待在我的ViewController(1st)中运行方法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

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

你以相反的方式做到了......这样做......

  • 创建EditableViewControllerDelegate,
  • 您的ViewController应符合EditableViewControllerDelegate协议,
  • 将ViewController实例指定为EditableViewController实例的委托

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM