2013-09-01 67 views
4

我想从我的viewcontroller 2使用协议和委托推送一个字符串文本到viewcontroller 1。我对这种传递数据的方法很陌生,所以如果我以任何方式看起来无知,请原谅我。字符串颜色总是返回null。我会后我到目前为止,代码,如果有帮助,即时通讯使用的导航控制器,并使用导航后退按钮从视图控制器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; 

的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

我做了,如果我没有,我甚至不会让它成为新的。我必须以某种方式使用protcol和代表在视图控制器之间传递它。 –

+0

可能你忘了设置ViewController2.delegate = Viewcontroller1 – bhawesh

+0

为什么你必须这样做“某种方式”?这是为了上课吗? –

回答

2

只是一对夫妇的事情,我在你的代码注意到,你的财产应包含指定的协议:

@property (retain) id <PassString> delegate; 

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

[viewController2Instance setPassingDelegate:self]; 
+1

我忘了设置代表。谢谢 –

相关问题