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];

ViewController 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 に答える