提问人:Andrew Wertheim 提问时间:4/17/2023 最后编辑:HangarRashAndrew Wertheim 更新时间:4/18/2023 访问量:34
在循环 iPhone 应用程序期间取消隐藏并从按钮获取输入
Unhide and get input from button during while loop iPhone app
问:
我正在 Swift for iPhone 中与人类和计算机玩家一起构建投注功能。我为投注过程开始一个 while 循环,遍历每个玩家。如果是电脑玩家,则调用自动投注函数。如果是人类玩家,我想取消隐藏操作按钮(下注、检查、弃牌等)并等待用户的输入,然后再继续下注循环。(简化代码如下)出于某种原因,取消隐藏按钮永远不会执行,即使成功打印了取消隐藏后的打印语句也是如此。此外,while 循环似乎跳过等待用户输入,然后再继续。构建它以实现我想要做的事情的“正确”方法是什么?
感谢您的任何帮助/见解。
listOfPlayers = [computer1, player1, computer2]
while !bettingRoundComplete {
for player in listOfPlayers {
if player == computer1 {
autoBet()
}
if player == player1 {
betButton.isHidden = false
checkButton.isHidden = false
var playerFinishedTurn = false
while !playerFinishedTurn {
// wait for player to enter input via buttons (which should be unhidden but are not)
// do some things with input
// flip playerFinishedTurn flag to true
}
if player == computer2 {
autoBet()
}
// if bettingRoundComplete, exit loop (global variable flag triggered within betting functions that are called during while loop execution)
}
}
答:
1赞
Duncan C
4/18/2023
#1
你对事件驱动应用的工作原理有一个基本的误解。你的应用会收到有关用户操作等事件的通知,运行你的代码以响应该操作,然后返回并等待其他事情发生。你不能有一个等待用户操作的 while 循环,因为当你是你的 while 循环时,你不会让用户响应。您需要重构代码,使其像状态机一样进入“收集用户输入”模式。
评论