3

我想了解一些关于ViewWillAppear.I 的 viewwillappar 数据刷新方法。我想要做的是,当这个视图控制器从前一个推送时,这种刷新不应该发生。(最初加载此控制器时不应调用 viewwillappear)。这可能吗?如果是这样,我该怎么做?

请帮助我谢谢

4

3 回答 3

8

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;

}
于 2013-10-22T03:48:15.050 回答
1

这是使用 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
}
于 2018-05-15T17:31:51.913 回答
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
    }
}
于 2021-06-01T03:43:48.407 回答