我正在尝试使用协议和委托将字符串文本从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];