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

时间:2013-09-01 19:36:05

标签: iphone ios delegates nsstring protocols

我正在尝试使用协议和委托从我的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);
}

1 个答案:

答案 0 :(得分:2)

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

@property (retain) id <PassString> delegate;

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

[viewController2Instance setPassingDelegate:self];