0

我有一个带有文本框的视图(viewControllerA)。用户填充它并单击下一步。完成几个步骤后,他们完成/提交所有数据,我想将它们弹出回 viewControllerA,但是当我这样做时,文本框仍然被填充。我不想清除 viewWillAppear 因为我想使用内置的后退按钮功能。如何仅在 popToViewController 之后清除该文本框?

[rootController popToViewController:rootController.transferScanPartView animated:YES];
4

1 回答 1

0

有多种方法可以做到这一点。我在下面发布的是我的第二次尝试,我认为这里最简单。在你的vc中有一个块,比如

@property (nonatomic,strong) void ( ^ appearBlock )();

然后在下次视图出现时使用它来做任何你想做的事情。第一次这将是 nil 并且不会执行,然后当您调用您发布的代码时也会执行类似的操作

__weak myVc * weakSelf = self;
self.appearBlock = ^ { weakSelf.edit.text = nil; };
// Code you posted, where you present your popover
[rootController popToViewController...

并且在你看来会出现

- ( void ) viewWillAppear ...
{
  [super viewWillAppear...

  if ( self.appearBlock )
  {
    // Execute block
    self.appearBlock();

    // Ensure we never call it again
    self.appearBlock = nil;
  }

  .. rest of view will appear ..
}

编辑

这里的问题是,根据您使用的 iOS 以及您呈现 vc 的方式,在呈现或关闭视图时会调用或不调用许多东西。

根据这一点,您可能必须将呼叫转移appearBlock到不同的地方。可以使用 popover 委托,但我认为 iOS 9 不支持,那么对于 popover,您也有 beingPresented / beingDismissed消息。

于 2020-08-31T12:49:00.733 回答