如何创建一个闭包来允许你修改控制器的用户界面?
类似这样的东西::
// Presents controller
present(MyController()) {
// Updates Controller
$0.backgroundColor = .red
$0.delegate = self
}
而不是:
let controller = MyController()
// Updates Controller
controller.backgroundColor = .red
controller.delegate = self
// Presents controller
present(controller, animated: true)
我希望能够做到这一点,因为代码看起来更有组织,没有那么多的变量和常量。
1条答案
按热度按时间yqlxgs2m1#
注意保留周期。您可能希望将
controller
参数设置为可选参数,以确保它被弱持有。或[unowned controller]
,位于present(_:animated:)
完成块的左括号旁边。还要注意,在演示动画完成后 * 更新视图控制器的背景颜色对用户来说可能看起来很奇怪。您可能需要采取不同的方法,例如:
(This可以推广到不仅仅是
UIViewController
)用途: