私はすべてのタブにコントローラがあるタブバーアプリケーションを実装しています。アプリケーションが実行されると、私はログインフォームでモーダルビューをスローします。ユーザーがログインすると、このモーダルビューが閉じられ、すべてのタブバーコントローラにユーザー名を渡したいと思います。私が代表者にidJson
値を渡すために[[self delegate] passUserInfo:idJson];
を呼び出す実装LoginViewController.h
にプロトコルとデリゲート、モーダルビューフォームからすべてのタブバーコントローラにデータを渡す
@protocol PassUserInfoDelegate <NSObject>
@required
- (void) passUserInfo: (NSString *)string;
@end
@interface LoginViewController : UIViewController <UIApplicationDelegate> {
id <PassUserInfoDelegate> delegate;
}
とどこか: 私はモーダルビューコントローラLoginViewController.h
で議定書を作成しました。私はHomeViewController.h
で次に
、:
@interface HomeViewController : UIViewController <PassUserInfoDelegate>
ので、このコントローラは、議定書のデリゲートです。 と実装HomeViewController.m
に、私はプロトコルのメソッドを作成:
- (void) passUserInfo:(NSString *)string
{
NSLog(@"I got the string = %@", string);
}
を、私はLoginViewControllerにおけるプロトコルのデリゲートとしてHomeViewControllerを割り当てる:
- (void)viewDidLoad
{
loginViewController = [[LoginViewController alloc] init];
[loginViewController setDelegate:self];
[super viewDidLoad];
}
これまでのところ、これが働いています。私はプロトコルからこのクラスにidJson文字列を取得します。 私が今やりたいことは、別のクラスで同じことをすることです。クラスにidJson値も渡したいと思っています。だから、私はHome2ViewController.h
同じことで作成された:
@interface HomeView2Controller : UIViewController <PassUserInfoDelegate>
とプロトコルメソッド作成:
- (void) passUserInfo:(NSString *)string
{
NSLog(@"I got the string = %@", string);
}
- (void)viewDidLoad
{
loginViewController = [[LoginViewController alloc] init];
[loginViewController setDelegate:self];
[super viewDidLoad];
}
が、これをこのクラスのpassUserInfoメソッドが呼び出されることはありません。 私は何が間違っていますか?
ありがとうございます!