iphone – 使用协议和委托在视图控制器之间传递数据

我正在尝试使用协议和委托将字符串文本从viewcontroller 2推送到viewcontroller 1.我对这种传递数据的方法不熟悉,如果我在任何方面都显得无知,请原谅我.字符串颜色始终返回null.我将发布到目前为止的代码,如果有帮助,我使用导航控制器并使用导航后退按钮从ViewController 2转到ViewController 1.

Viewcontroller 2

.H

@protocol PassString <NSObject>
@required
 - (void) setSecondFavoriteColor:(NSString *)string;
 @end
 @interface ViewController2 : UIViewController{
 UIButton *button; 
 NSString *ee
  id <PassString> delegate;
  }
  @property (retain) id delegate;

ViewController 2

.M

@synthesize delegate;   

-(void)button{
ee = @"Blue Color";
[[self delegate] setSecondFavoriteColor:ee];

ViewController 1.h

@interface ViewController1 : UIViewController <PassString>{
NSString*color;
 }
 @property (strong,nonatomic) NSString *color

ViewController 1.m

- (void)setSecondFavoriteColor:(NSString *)string
{
color = string;
NSLog(@"%@",color);
}

最佳答案 我在代码中注意到的一些事情,您的属性应该包含指定的协议:

@property (retain) id <PassString> delegate;

在实现委托方法的类中的某个时刻,您必须将委托分配给视图控制器1.例如:

[viewController2Instance setPassingDelegate:self];
点赞