切换视图后ImageView和NSString变量重置

时间:2012-08-25 22:27:06

标签: iphone ios uiviewcontroller background uiimageview

我正在设计一个iPhone程序,可以在一个视图中按下“自定义”圆角矩形按钮,显示不同的视图(我使用内置故事板上的模态连接在视图之间切换),可以在第一个视图上自定义背景。 “自定义”屏幕(第二个屏幕)有几个按钮,用于选择使用以下代码的背景:

ViewController.h:

@interface{
...
IBOutlet UIImageView *backgroundImageTest;

...

}

...

@property (strong,nonatomic) NSString *backgroundImageName;

@property (retain, nonatomic) IBOutlet UIImageView *backgroundImageTest;

...

ViewController.m:

- (IBAction)setJungleBackground:(id)sender {

backgroundImageName=@"jungle.png";

backgroundImageTest.image=[UIImage imageNamed:@"jungle.png"];
}

- (IBAction)setArcticBackground:(id)sender {

backgroundImageName=@"arctic.png";

backgroundImageTest.image=[UIImage imageNamed:@"arctic.png"];
}

为每个可能的背景。

同样在ViewController.m中:

- (void)viewDidLoad
{

if(!notFirstTime){

    notFirstTime=YES;

    ...

    backgroundImageName=@"white.png";

}

...

backgroundImageTest.image=[UIImage imageNamed:backgroundImageName];

...

[super viewDidLoad];

}

每次切换视图时,firstTime布尔值重置为NO,背景保持默认背景(@“white.png”)。如果我用@“jungle.png”替换@“white.png”,背景有效,但无法切换到任何其他背景。

我为两个视图使用一个ViewController。到目前为止,似乎工作得很好,除了这个小问题。我应该使用多个ViewControllers吗?我不确定在什么情况下我应该这样做。

另外,我不确定我是否应该在变量的属性声明中使用retain或strong。

我对iPhone编程比较陌生,任何建议都非常感谢。

谢谢, 亚历

1 个答案:

答案 0 :(得分:0)

在实例化视图控制器后调用viewDidLoad - 您似乎在不断重新创建视图控制器实例。避免这种情况,然后使用viewDidAppear。