如何在没有警告和错误的闭包内使用 navigationController?.popViewController(animated: true)?

Posted

技术标签:

【中文标题】如何在没有警告和错误的闭包内使用 navigationController?.popViewController(animated: true)?【英文标题】:How do I use navigationController?.popViewController(animated: true) inside of a closure with no warnings and errors? 【发布时间】:2016-12-08 15:22:59 【问题描述】:

我知道在 swift 3 中是这样的:

navigationController?.popViewController(animated: true)

会产生这个警告:

"Expression of type "UIViewController?" is unused"

我知道消除此警告的推荐方法是执行以下操作:

_ = navigationController?.popViewController(animated: true)

但是当它在闭包内时:

myFunction(myParams: ["blah", "bleh"], callback:  myResult in
_ = navigationController?.popViewController(animated: true)
)

我收到此错误:

Implicit use of 'self' in closure; use 'self.' to make capture semantics explicit

如果我这样做:

myFunction(myParams: ["blah", "bleh"], callback:  myResult in
self.navigationController?.popViewController(animated: true)
)

我又收到警告了:

"Expression of type "UIViewController?" is unused"

【问题讨论】:

【参考方案1】:

你就快到了!它只是结合了您已经制作的内容:

myFunction(myParams: ["blah", "bleh"], callback:  myResult in
    _ = self.navigationController?.popViewController(animated: true)
)

【讨论】:

好吧,呃!!哎呀,这让我发疯了,谢谢!

以上是关于如何在没有警告和错误的闭包内使用 navigationController?.popViewController(animated: true)?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复:在闭包 resharper 警告中访问 foreach 变量?

在闭包内声明的类与没有闭包的标准类

在直接调用委托的情况下如何减轻“访问修改的闭包”

如何在没有任何错误或警告的情况下找到构建失败的原因

如何在 gcc/clang 中的错误和警告之间添加换行符/边框

Swift - 在闭包内调用 segue