如果我的"按钮"在视图控制器1上选择,然后图像应该显示并停留在视图控制器2上

时间:2014-08-14 15:57:37

标签: ios xcode viewcontroller

enter image description here

如果用户在视图控制器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];
    

    } }

3 个答案:

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