4

我正在尝试使用协议和委托将字符串文本从我的视图控制器 2 推送到视图控制器 1。我对这种传递数据的方法很陌生,所以如果我看起来很无知,请原谅我。字符串颜色始终返回 null。我将发布到目前为止的代码,如果有帮助,我将使用导航控制器并使用导航返回按钮从 ViewController 2 转到 ViewController 1。

视图控制器 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;

视图控制器 2

.m

@synthesize delegate;   

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

视图控制器 1.h

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

视图控制器 1.m

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

1 回答 1

2

我在您的代码中注意到了几件事,您的属性应包含指定的协议:

@property (retain) id <PassString> delegate;

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

[viewController2Instance setPassingDelegate:self];
于 2013-09-01T20:13:37.310 回答