如何避免viewWillAppear最初调用

时间:2013-10-22 03:36:04

标签: ios viewwillappear

我想知道一些关于ViewWillAppear的内容。我有一个用于数据刷新的viewwillappar方法。我想要做的是当这个viewcontroller从前一个推出时,这种刷新不应该发生。 (最初加载此控制器时,不应调用viewwillappear)。这可能吗?如果是这样我怎么能这样做?

请帮帮我 感谢

3 个答案:

答案 0 :(得分:7)

视图出现时将始终调用viewWillAppear

您可以使用实例变量来确保它不是第一次调用,即。

    @implmentation ViewController {
   BOOL _firstLoad
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    _firstLoad = YES;
}

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    if (!_firstLoad) {
      // do what you want to do when it is not the first load
    }
    _firstLoad = NO;

}

答案 1 :(得分:0)

这是使用swift 4的一个例子。

var isLoadedFirstTime = false
override func viewDidLoad() {
    super.viewDidLoad()
    isLoadedFirstTime = true
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    if !isLoadedFirstTime {
      // Do what you want to do when it is not the first load
    }
    isLoadedFirstTime = false
}

答案 2 :(得分:0)

[更新解决方案] 使用 swift 5 的例子:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    if !isMovingFromParent {
       // Do what you want to do when it is not the first load
    }
}