如果用户在视图控制器1上选择了我在下面创建的“按钮/复选框”,那么我希望在视图控制器2上显示(显示)图像。
如果我离开视图控制器2屏幕并返回查看控制器2屏幕,只要在视图控制器1上仍然选择了按钮,图像仍应显示。
如果在视图控制器1上不再选择“按钮”,则视图控制器2上不再显示图像。
请注意,提示的“按钮/复选框”是由以下代码创建的。请帮助,谢谢。
(IBAction)checkButton2:(id)sender { if(!checked2){
[_checkBoxButton2 setImage:[UIImage imageNamed:@"checkBoxMarked.png"] forState:UIControlStateNormal];
checked2 = YES;
// alert placeholder
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Locked" message:@"this is locked." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:@"Cancel", nil];
[alert show];
[_checkBoxButton2 setImage:[UIImage imageNamed:@"checkBox.png"] forState:UIControlStateNormal];
checked2 = NO;
}
否则if(checked2){
[_checkBoxButton2 setImage:[UIImage imageNamed:@"checkBox.png"] forState:UIControlStateNormal];
checked2 = NO;
// alert placeholder
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Character selection:" message:@"The box is no longer selected." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:@"Cancel", nil];
[alert show];
} }
答案 0 :(得分:1)
您应该将View嵌入导航控制器。
按Next Screen时,执行segue:
- (IBAction)nextBtn:(id)sender {
[self performSegueWithIdentifier:@"segue" sender:self];
}
在您进行segue之前,设置一个BOOL标志以确定它是否应该显示:
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"step2Segue"]){
ImageViewController *controller = (ImageViewController *)segue.destinationViewController;
controller.displayImage = checked2;
}
}
最后在ImageViewController中添加一个基于Bool的条件来确定是否应该显示它: 在 .h
@interface ImageViewController : ViewController
@property (strong, nonatomic) IBOutlet UIImageView *image;
@property (nonatomic, assign) BOOL displayImage;
@end
在 .m
中-(void)viewDidLoad{
if (self.displayImage) {
self.image.hidden = YES;
}else{
self.image.hidden = NO;
}
}
答案 1 :(得分:0)
一次一件事。
在ViewController1类中,你必须创建一个ViewController2实例并在你的.h中强大(如果你没有使用Swift)。
@property (nonatomic, strong) ViewController2 *viewController2;
确保在按下按钮时实例化它。在ViewController 2的.h中,您必须使用UIImage和UIImageView或者用于显示图片的任何内容做类似的事情
@property (nonatomic, strong) UIImage *myImage;
@property (nonatomic, strong) UIImageView *myImageView;
然后,在ViewController1中,当您按下按钮时,您将必须控制ViewController2中发生的事件。我会使用BOOL或其他简单的东西来跟踪图像何时可见。
BOOL imageShouldBeThere = false;
- (void) myButtonWasPressed: (id) sender
{
if(imageShouldBeThere == false)
{
[viewController2Instance showTheImage];
imageShouldBeThere = true;
}
else
{
[viewController2Instance hideTheImage];
imageShouldBeThere = false;
}
}
这显然只是一个基本模板,但它应该可以解决问题。
答案 2 :(得分:0)
工作代码:
<强> FirstViewController.m 强>
- (IBAction)buttonClicked:(id)sender {
SecondViewController *secondViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"second"];
secondViewController.shouldShowImage = YES;
[self presentViewController:secondViewController animated:YES completion:^{
}];
}
<强> SecondViewController.h 强>
@property (nonatomic, assign) BOOL shouldShowImage;
<强> SecondViewController.m 强>
- (void)viewDidLoad
{
[super viewDidLoad];
if (self.shouldShowImage)
{
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 320)];
[imageView setImage:[UIImage imageNamed:@"9gag.png"]];
[self.view addSubview:imageView];
}
else
{
//dont show image....
}
}