【问题标题】:array's objects loss in storyboards's scene故事板场景中数组的对象丢失
【发布时间】:2013-06-23 22:03:14
【问题描述】:

我制作了一个有 2 个场景的游戏(第一个带有“开始游戏”按钮的欢迎屏幕,第二个 - 是游戏“)游戏很简单:头像试图防止与子弹碰撞(在 NSMutableArray 中表示为 uiimageviews *bullets) 在 -(void)touchesMoved:withEvent: 的帮助下。如果它碰撞 UIAlertView 似乎得到用户的选择:重复或转到 wellcome-scene。如果我们第一次进入游戏-scene,那么一切都很好。

问题是我们下次去游戏场景的时候。在 viewDidLoad 中启动后的属性项目符号显示其计数为 3(应该如此),但后者显示 bullets.count == 0; 我不知道这怎么可能 - 我在仅在 viewDidLoad 中调用的方法中启动了这个数组。并且在第一时间一切正常。

附: duaring 代码我不使用 propertyName,只使用 self.propertyName。

P.P.S 我在 [UIView commitAnimations] 中提出了理由——这就是我制作子弹动画的方式。 如果我//隐藏它。一切都很好。但是如果没有动画,它看起来很糟糕。

【问题讨论】:

    标签: ios animation uiviewanimation data-loss


    【解决方案1】:

    不要在 viewDidLoad 中调用方法,而是尝试在 viewDidAppear 中调用它,以便在每次视图出现时将计数设置为 3,因为它应该只加载到内存中一次,但每次视图显示时都会调用 viewDidAppear。

    【讨论】:

    • 在情节提要场景中 viewDidAppear 和 viewDidLoad 调用相同的时间(如果应用程序没有被 ios 中断)。那么为什么你认为它应该有帮助呢?
    • 因为当我使用 UITableView 并让它从核心数据中的数组加载单元格时,调用 [self.tableView reloadData] 不会刷新放置在 viewDidLoad 中的数据,但如果我放置它会刷新它在 viewDidAppear 中。这样,当我激活模式视图控制器并向数据库添加新项目时,当我关闭模式时,表已刷新。所以,至少据我所知(如果我错了,请纠正我) viewDidAppear 每次该视图即将显示在屏幕上时都会调用,而 viewDidLoad 会在视图加载到内存时调用。
    • well)) 当视图“即将显示”时调用 viewWillAppear =) 如果你想重新加载 tableView 的数据,最好不要使用 viewDidAppear,而是使用 viewWillAppear。因为如果你有 1000 个元素的数据源,用户首先会看到最后一个数据源。
    • 有道理,谢谢。既然您这么说,我将更改我的应用程序以使用 viewWillAppear。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    • 2012-12-13
    • 2012-04-15
    相关资源
    最近更新 更多