gpt4 book ai didi

ios - 在 iOS 11 中,关闭模态呈现的导航 Controller 会导致视觉重复

转载 作者:可可西里 更新时间:2023-11-01 00:56:31 26 4
gpt4 key购买 nike

我有一个模态呈现的 UINavigationController。在该导航 Controller 上,推送了两个 View Controller 。按下“完成”按钮后,整个模态呈现应该从第二个 View Controller 中消失。为此,在 presentingViewController 上调用 dismiss:

@IBAction func doneWasPressed(_ sender: UIBarButtonItem) {
presentingViewController!.dismiss(animated: true)
}

在 iOS 11 中,当导航 Controller 中的祖先呈现一个 UISearchController,它被添加到 navigationItem 时,关闭导航 Controller 会导致视觉伪像 View 的副本在动画 View 下方可见。一旦顶 View 移出 View ,下面的副本就会突然消失。有关问题的屏幕录像,请参见下面的 gif。

this GitHub repository 中提供了一个可重现的小示例.它是使用 Swift 4 在 Xcode 9 (GM) 上创建的。

是否有已知的解决方法?


最佳答案

准备您的 minimal, complete, and verifiable example ,您注意到问题出在 UISearchController 上。我注意到,即使在我推送到第二个页面 View Controller (通过带有 UISearchController 的 View Controller )之后,搜索 Controller 仍然存在:

search controller still in hierarchy

如果在 View 消失时将 isActive 设置为 false,这个问题就会消失。

override func viewDidLoad() {
super.viewDidLoad()

let searchController = UISearchController(searchResultsController: nil)
searchController.obscuresBackgroundDuringPresentation = false
searchController.hidesNavigationBarDuringPresentation = false
navigationItem.searchController = searchController
navigationItem.hidesSearchBarWhenScrolling = false
}

override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)

navigationItem.searchController?.isActive = false
}

并且,完成此操作后,解雇会按预期进行。


我的原始答案建议您要关闭导航 Controller ,而不是呈现 View Controller ,如下所示。


如果您以模态方式呈现导航 Controller ,然后从那里推送一些 View Controller ,您不想关闭 presentingViewController,而是关闭 navigationController,例如:

navigationController?.dismiss(animated: true)

或者,或者,在您要返回的 View Controller 上创建一个展开操作:

@IBAction func unwindHome(_ segue: UIStoryboardSegue) {
// this is intentionally blank
}

然后您就可以在 IB 中创建展开转场:

enter image description here

或者,如果您必须以编程方式执行此操作,请在 View Controller 和“退出”导出之间创建展开转场,然后您可以performSegue(withIdentifier:sender:)

关于ios - 在 iOS 11 中,关闭模态呈现的导航 Controller 会导致视觉重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46228862/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com