gpt4 book ai didi

ios - 如何将 YesNo 框实现为 ViewController 方法?

转载 作者:行者123 更新时间:2023-11-28 11:33:47 25 4
gpt4 key购买 nike

我想向我的 ViewController 添加一个方法,该方法显示一 strip 有文本的消息作为带有是和否按钮的警报。结果应为 Bool 类型(是/否)。

我试过的是:

func YesNoBox(msg: String) -> Bool
{
var retVal = false
let alert = UIAlertController(title: "", message: msg, preferredStyle: .alert)
let action_yes = UIAlertAction(title: "Yes", style: .default, handler:
{ _ in NSLog("The \"Yes\" alert occured."); retVal = true })
let action_no = UIAlertAction(title: "No", style: .cancel, handler:
{ _ in NSLog("The \"No\" alert occured."); retVal = false })
alert.addAction(action_yes)
alert.addAction(action_no)
self.present(alert, animated: true, completion: nil)
return retVal
}

但是,retVal 的值总是false。如果我使用的是 C/C++,我想我可以用一个指针来解决这个问题,但这是 Swift(我对此还很陌生)。

任何人知道我怎样才能让它工作吗?

编辑:我遇到的问题如下。在 ViewController 上我有一个 TextField。当我点击文本字段时,应用程序应询问用户是否要粘贴剪贴板中的文本。如果是,则粘贴,否则将焦点置于 TextField(即让光标在其中闪烁)。我尝试使用“textFieldShouldBeginEditing”来执行此操作,并且在这种方法中我显示了 YesNoBox。问题是 TextField 在 YesNoBox 关闭后永远不会获得焦点。当我在 Box 调用后使用“becomeFirstResponder()”时,应用程序会卡住。我不知道该怎么办?

最佳答案

使用补全

func yesNoBox(msg: String,completion:@escaping(Bool) -> ())
{
let alert = UIAlertController(title: "", message: msg, preferredStyle: .alert)
let action_yes = UIAlertAction(title: "Yes", style: .default, handler:
{ _ in
NSLog("The \"Yes\" alert occured.");
completion(true)
})
let action_no = UIAlertAction(title: "No", style: .cancel, handler:
{ _ in
NSLog("The \"No\" alert occured.");
completion(false)
})
alert.addAction(action_yes)
alert.addAction(action_no)
self.present(alert, animated: true, completion: nil)
}

打电话

yesNoBox(msg:"someMessage") { yes in
if yes {
// do yes action
}
else {
// do no action
}
}

2个回调:

这个函数有 2 个完成(假设我们有一个函数可以上传图像并通过完成通知进度,另外 1 个表示完成)

 func uploadImage(data: Data,progress:@escaping(Float) -> (),completion:@escaping(Bool) -> ()) {
// implementation here
}

调用

self.uploadImage(someData) { progress in
print(progress)
}) { done in
print(done)
}

关于ios - 如何将 YesNo 框实现为 ViewController 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56157096/

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