viewDidAppear反复调用

时间:2011-02-26 21:51:45

标签: iphone

我正在开发一个应用程序,显示随机选择的图像,触摸后会发生变化 我正在从viewDidAppear呈现一个模态视图,它作为菜单。

显然,每当在主视图上加载新图像时, 重复调用viewDidAppear,因此菜单模式视图会不断弹出。 我在viewDidAppear中放置presentModalView的原因是因为模态视图必须在主视图之前的最开始出现,而不是从主视图的触摸触发器出现。 我曾尝试在其他地方提出模态视图,但没有真正起作用。

任何建议?

以下是我在主视图上的viewDidAppear, 但是这里的信息不多......

 -(void)viewDidAppear:(BOOL)animated
{
NSLog(@"viewDidAppear");
[self presentModalViewController:modalView animated:YES];
} 

我的应用程序会在每次触摸时不断重新加载随机图像。

2 个答案:

答案 0 :(得分:2)

应用启动时会调用

viewDidAppear。然后显示模态视图,使视图消失。当模态视图消失时,您的视图会重新出现,因此您再次调用viewDidAppear。泡沫,冲洗,重复。

听起来你想在你的对象上设置一个标志,这样你就可以忽略后续的viewDidAppear调用。

答案 1 :(得分:1)

在您的init方法中将属性添加到UIView子类初始化为false ...

@interface RandomImageView : UIView {
    BOOL hasPresentedModalMenuView
}

@property(assign) BOOL hasPresentedModalMenuView;

然后在viewDidAppear方法中检查属性是否为false。如果是,则显示视图并将属性设置为TRUE。

- (void)viewDidAppear {
    if (!self.hasPresentedModalMenuView) {
        // Present view.....
        .....
        self.hasPresentedModalMenuView = TRUE;  
    }
}

这样可以防止多次显示模态菜单视图。