OGeek|极客世界-中国程序员成长平台

标题: iOS:键值观察不会关闭模态视图 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 02:26
标题: iOS:键值观察不会关闭模态视图

我在模态视图中有以下键值观察器方法:

- (void)observeValueForKeyPathNSString *)keyPath ofObjectid)object changeNSDictionary *)change contextvoid *)context
{
  if ([keyPath isEqualToString"uploadComplete"]) {
    NSLog(@"UploadVC hears upload complete");
    [self dismissViewControllerAnimated:YES completion:nil];
  }
}

我用它来观看照片对象并知道它何时完成上传。当我运行它时,它的行为与预期一样,并且控制台记录“UploadVC 听到上传完成” - 但随后未执行以下行 - 模态不会被解除。

没有错误或其他任何东西, View 只是坐在那里,模态永远不会被解雇。这是怎么回事?



Best Answer-推荐答案


当您在后台线程上收到 KVO 通知时可能会发生这种情况,因此尝试更新 UI 可能会导致任何意外行为(UI 未更改、延迟后更改、应用程序崩溃等)。确保在主线程上调用所有更新 UI 代码:

- (void)observeValueForKeyPathNSString *)keyPath ofObjectid)object changeNSDictionary *)change contextvoid *)context
{
  if ([keyPath isEqualToString"uploadComplete"]) {
     NSLog(@"UploadVC hears upload complete");
     dispatch_async(dispatch_get_main_queue(), ^{
         [self dismissViewControllerAnimated:YES completion:nil];
     });

  }
}

关于iOS:键值观察不会关闭模态视图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16240316/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4