如果在视图控制器1上select了我的“button”,则图像应该显示并停留在视图控制器2上

在这里输入图像说明

如果用户在视图控制器1上select了我在下面创build的“button/checkbox”,那么我希望图像出现在视图控制器2上。

如果我离开视图控制器2屏幕并返回查看控制器2屏幕,则只要在视图控制器1上仍然select了该button,图像仍应该显示。

如果在视图控制器1上不再select“button”,则视图控制器2上不应再显示该图像。

请注意,上面提到的“button/checkbox”是由下面的代码创build的。 请帮忙,谢谢。

  • (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; 

    }

    else 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]; 

    }}

你应该把你看成一个导航控制器。

当你按下Next Screen时,执行一个segue:

 - (IBAction)nextBtn:(id)sender { [self performSegueWithIdentifier:@"segue" sender:self]; } 

在你继续之前,设置一个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; } } 

一心一意。

在ViewController1类中,必须创build一个ViewController2的实例,并在.h中创build并强大(如果不使用Swift的话)。

 @property (nonatomic, strong) ViewController2 *viewController2; 

确保在按下button的时候实例化它。 在ViewController 2的.h中,你必须做一些类似于UIImage和UIImageView或者你用来显示图片的东西

 @property (nonatomic, strong) UIImage *myImage; @property (nonatomic, strong) UIImageView *myImageView; 

然后,在ViewController1中,当您按下button时,您将不得不控制ViewController2中发生的事件。 我会使用布尔或其他简单的东西来跟踪图像应该是可见的。

 BOOL imageShouldBeThere = false; - (void) myButtonWasPressed: (id) sender { if(imageShouldBeThere == false) { [viewController2Instance showTheImage]; imageShouldBeThere = true; } else { [viewController2Instance hideTheImage]; imageShouldBeThere = false; } } 

这显然只是一个基本的模板,但它应该做的伎俩。

工作代码:

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.... } }