【问题标题】:ImageView and NSString Variables Reset after Switching ViewsImageView 和 NSString 变量在切换视图后重置
【发布时间】:2012-08-25 22:27:06
【问题描述】:

我正在设计一个 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。到目前为止,它似乎工作得很好,除了这个小问题。我应该使用多个 ViewController 吗?我不确定在什么情况下应该这样做。

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

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

谢谢, 亚历克斯

【问题讨论】:

    标签: iphone ios uiviewcontroller background uiimageview


    【解决方案1】:

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

    【讨论】:

    • 听起来不错——如何避免创建视图控制器的多个副本,viewDidLoad 和 viewDidAppear 有什么区别?我刚开始 iPhone 编程,坦率地说我不知道​​ ViewController 是在哪里实例化的。
    • @Alekxos 它在您调用[[MyViewController alloc] init...] 时被实例化。我已经解释了 viewDidLoad 的作用——看看 Apple 的文档。
    • 我将 viewDidLoad 代码移至 viewDidAppear,但没有任何改变。错误可能是由于对两个视图使用一个控制器引起的吗?我不确定控制器如何知道 viewDidLoad 或 viewDidAppear 是指哪个视图。
    • @Alekxos 正如我所说,移动你的代码本身是不够的 - 你应该确保视图控制器的创建不会发生多次,只发生一次。
    • 我该怎么做?我在 AppDelegate 中搜索了 [[MyViewController alloc] init...],但它不存在 - 还有其他地方吗?如果这很重要,我正在使用 ARC。
    猜你喜欢
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    相关资源
    最近更新 更多