如何更改背景图片?

时间:2010-11-02 15:22:13

标签: iphone objective-c cocoa-touch sdk pushviewcontroller

假设在应用中你有2个UIButton,buttonA和buttonB。如果你想从这两个按钮调用FlipsideViewController,那么唯一的区别就是背景图像。 (即:如果按下buttonA,BackGroundA将出现在FlipsideViewController的视图中,否则,它将是BackGroundB。)

现在默认设置第一个BackGround(BackGroundA)。如果按下buttonB,我该如何处理第二个背景图像(BackGroundB)?

1 个答案:

答案 0 :(得分:3)

根据您呈现FlipsideViewController的方式,有两种方法:

  • 使“背景”成为FlipsideViewController的属性,并在显示vc之前在每个按钮的操作方法中根据需要进行设置。
  • 使用“background”参数在FlipsideViewController中添加自定义init方法。

“background”可以是int或enum属性/参数,然后FlipsideViewController中的代码将根据该值执行自己需要的任何操作。

修改
要使用属性方法:

首先,在FlipsideViewController中,确保你有一个名为backgroundImageView的UIImageView的IBOutlet。

接下来,在FlipsideViewController.h中,添加一个属性来设置背景(我使用的是int):

@interface FlipSideViewController : UIViewController {
    int backgroundId;
}
@property (assign) int backgroundId;

接下来,在FlipsideViewController.m中,添加:

@synthesize backgroundId;

-(void)viewWillAppear:(BOOL)animated
{
    if (backgroundId == 2)
        self.backgroundImageView.image = [UIImage imageNamed:@"background2.png"];
    else
        self.backgroundImageView.image = [UIImage imageNamed:@"background1.png"];
}

最后,在主视图控制器中,按钮操作方法如下所示:

-(IBAction)buttonPressed:(UIButton *)sender
{
    FlipSideViewController *fsvc = [[FlipSideViewController alloc] initWithNibName:nil bundle:nil];
    fsvc.backgroundId = sender.tag;  //assuming btn1.tag=1 and bnt2.tag=2
    [self presentModalViewController:fsvc animated:YES];
    [fsvc release];
}