gpt4 book ai didi

iphone - Objective-C:更改来自单独类的图像

转载 作者:行者123 更新时间:2023-11-29 03:59:13 25 4
gpt4 key购买 nike

我四处寻找这个问题的答案,但没有结果,所以我希望我没有问一个有答案的问题。

我有两个类(ClassA 和 ClassB),它们都连接到通过 segue 链接的 UIViewController。 ClassA 包含一个名为backgroundImage 的UIImage。我的目标是从 ClassB 中更改 ClassA 的背景图像。

在 ClassB.h 中我尝试过:

@property (nonatomic, retain) ClassA *mainView;

在 ClassB.m 中,我尝试通过以下方式更改背景图像:

@synthesize mainView;
//Then inside button click I tried:
[mainView.backgroundImage setImage:[UIImage imageNamed:@"newImage.jpg"]];

显然这不起作用,因为我没有将图像设置为应用程序中使用的相同 ClassA。我知道我错过了一些明显的东西,提前致谢!

最佳答案

请使用协议(protocol)机制来满足您的需求

实现如下

在项目的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 类中实现协议(protocol)来更改背景。

现在在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"];
}

在B类中,一旦-(void)ChangeBackgroundOfClassA调用在A类上实现的委托(delegate)方法调用,背景图像就会发生变化

这是和我一起工作

也许对你有帮助!!!

关于iphone - Objective-C:更改来自单独类的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16097895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com