嘿,我有两个UIViewControllers
。在第一个中,有一个UIButton
,其中包含一个图像。当用户进入我的第二个ViewController
时,有许多按钮,其中包含不同的图像。因此,当用户在我的VC2中按下一个按钮时,它应该将图像从其自身设置为我的VC1上的UIButton。
我已经通过添加以下内容实现了第一个VC:
在#import "ViewController1.h"
ViewController2.m
@interface ViewController2 ()
我该怎么做?例如:
VC2:
- (IBAction)seaButton:(id)sender {
//Access the IBOutlet from VC1 and set the image of the Button like:
UIImage * seaBtnImage = [UIImage imageNamed:@"Sea.png"];
[buttonOutlet setImage:seaBtnImage forState:UIControlStateNormal];
}
谢谢!
答案 0 :(得分:2)
步骤1:在ViewController2.h中,在VC2上创建一个属性以引用VC1:
#import "ViewController1.h"
@property (nonatomic, strong) ViewController1 *viewController1;
步骤2:在VC1中创建VC2时,设置属性:
[viewController2 setViewController1:self];
步骤3:在ViewController2上设置按钮图像
[self.buttonVC2 setImage:[self.viewController1.buttonVC1 imageForState:UIControlStateNormal] forState:UIControlStateNormal];
注意:更好的模型是在VC1上提供返回正确图像的方法。例如在VC1中:
- (UIImage *)imageForButton {
return [self.buttonVC1 imageForState:UIControlStateNormal];
}
并在VC2中:
[self.buttonVC2 setImage[self.viewController1 imageForButton]];
答案 1 :(得分:1)
代表们参与的地方。定义如下内容:
@protocol ButtonSelectionDelegate <NSObject>
- (void)didSelectButtonImage:(UIImage *)image;
@end
并在VC1中实现它。将以下属性添加到VC2:
@property (nonatomic, weak) id<ButtonSelectionDelegate> delegate;
并将VC1设置为VC2的委托。
在VC2的IBAction
中,您将通过传递本地选择的图像来调用委托上面的didSelectButtonImage:
方法:
- (IBAction)seaButton:(id)sender
{
UIImage *seaBtnImage = [UIImage imageNamed:@"Sea.png"];
[self.delegate didSelectButtonImage:seaBtnImage];
}
在VC1的didSelectButtonImage:
中,您将使用委派提供的一个VC2更新插座按钮图像:
- (void)didSelectButtonImage:(UIImage *)image
{
[self.buttonOutlet setImage:image forState:UIControlStateNormal];
}