我有一个场景,可能需要重命名某些内容,我想用它UIAlertController来收集新名称。我希望它能够同时进行多次更改(虽然不太可能,但我想支持它)。
问题是我只需要在当前的结果出现时循环才能继续UIAlertController,事实上,循环会立即继续,当然一次不能出现多个。我一整天都被困在这个问题上,需要帮助。
我需要某种使用完成处理程序为下一个循环迭代提供绿灯的方法。
这是问题的简化版本,changeNames 函数位于UIViewController.
var names = ["Bob","Kate"]
func changeNames(){
for name in names {
let alert = UIAlertController(title: "Rename \(name)",
message: "What would you like to call \(name)?",
preferredStyle: .alert)
alert.addTextField(configurationHandler: { (textField) in
textField.text = name
})
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { [weak alert] (_) in
print("User changed \(name) to \(alert!.textFields![0].text)")
//Don't continue the loop until now
}))
self.present(alert, animated: true)
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢