Как изменить фоновое изображение? - PullRequest
1 голос
/ 02 ноября 2010

Предположим, в приложении у вас есть 2 UIButton, кнопка A и кнопка B. Если вы хотите вызвать FlipsideViewController с этих 2 кнопок, единственной разницей будут фоновые изображения. (т.е. если нажата кнопка A, BackGroundA появится на экране FlipsideViewController, в противном случае это будет BackGroundB.)

Теперь первый BackGround (BackGroundA) установлен по умолчанию. Как мне обработать второе фоновое изображение (BackGroundB), если кнопка B нажата?

1 Ответ

3 голосов
/ 02 ноября 2010

В зависимости от того, как вы представляете FlipsideViewController, есть несколько способов:

  • Сделайте "background" свойством FlipsideViewController и установите его по необходимости в методе действия каждой кнопки перед отображением vc.
  • Добавить пользовательский метод init в FlipsideViewController с параметром "background".

"background" может быть свойством / параметром типа int или enum, и тогда код в FlipsideViewController будет делать все, что ему нужно, на основании этого значения.

Edit:
Для использования имущественного подхода:

Во-первых, во FlipsideViewController убедитесь, что у вас есть IBOutlet для UIImageView с именем say backgroundImageView.

Далее в 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];
}
...