要件を満たすためにプロトコルメカニズムを使用してください
実装は以下の通り
プロジェクトのAppDelegate.hファイル 内
@protocol ImageChangeDelegate <NSObject>
@optional
-(void)ChangeImage;
@end
@interface AppDelegate : UIResponder <UIApplicationDelegate>
{
}
@property (nonatomic,strong) id<ImageChangeDelegate> delegateImageChange;
プロジェクトのAppDelegate.mファイル内
@synthesize delegateImageChange;
クラス B の .h ファイルに
#import "AppDelegate.h"
@interface EventGuestListViewController : UIViewController
{
AppDelegate* appDelegate;
}
-(void)ChangeBackgroundOfClassA;
現在、クラス B の .m ファイルに
- (void)viewDidLoad
{
[super viewDidLoad];
appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
}
今、BGを変更する方法で
-(void)ChangeBackgroundOfClassA
{
[appDelegate.delegateImageChange ChangeImage];
}
クラス A にプロトコルを実装して、背景を変更するようになりました。
クラスAの.hファイルに
#import "AppDelegate.h"
@interface EventGuestListViewController : UIViewController <ImageChangeDelegate>
{
IBOutlet UIImageView* imageBGClassA;
AppDelegate* appDelegate;
}
今クラスAの.mファイルに
- (void)viewDidLoad
{
[super viewDidLoad];
appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.delegateImageChange = self; //Here you need to set the delegate to 'self' to call then Custom Protocol method
}
-(void)ChangeImage
{
imageBGClassA.image = [UIImage imageNamed:@"newImage.jpg"];
}
-(void)ChangeBackgroundOfClassA
クラス Bでは、クラス A に実装されているデリゲート メソッド呼び出しを一度呼び出すと、背景画像が確実に変更されます
これは私と一緒に仕事です
それはあなたを助けるかもしれません!!!