gpt4 book ai didi

ios - 等待 X 秒或等待用户输入

转载 作者:行者123 更新时间:2023-11-30 11:46:04 25 4
gpt4 key购买 nike

我对 swift 很陌生,所以目前这对我来说有点复杂;抱歉,如果我这样做的话,听起来很愚蠢

前言:我有一个主视图 Controller (我们称之为 viewA)和一个 UIView,它从 .xib 文件获取其功能,我们称之为 viewB

这一切都在单个主视图 Controller 页面中

问题:所以我希望我的 ViewController 按顺序执行一堆方法,其中一个是调用此 viewB 中函数的结果(它是一个 subview ,所以我不能使用 segues)

所以在函数中我只想在以下任一情况下返回结果--

  1. 要按下的按钮
  2. 30 秒过去了

解决这个问题最有效的方法是什么?

编辑:简而言之,我想让我的主队列执行等待,直到有来自玩家的输入或 30 秒过去

代码结构:

ViewController:
class ViewController{

var viewB:CustomView
//methods
function to execute{
viewB.executeFunction()
}
}

自定义 View :

class CustomView:UIView{

//functions of initializing buttons and text boxes
func executeFunction(){
//wait for a user input to complete then return from this function. i cant figure out how this works
}

}

Image of the UI idea

最佳答案

我认为选项 1 更适合您的场景。当按下 Nib 上的按钮时,您可以调用该 block 。以下是如何在 swift 中使用 block 的代码:

// Code for your UIViewController
func presentPopup() {
let popup = NibClassName.instantiateViewFromNib()
popup.btnPressBlock = { [unowned self] (success) -> () in
// Code after button of UIView pressed
}
popup.frame = CGRect(x: 100, y: 100, width: 300, height: 300)
self.view.addSubview(popup)
}

// Code of your UIView class file
var btnPressBlock: ((Bool) -> ())?

class func instantiateViewFromNib() -> NibClassName {
let obj = Bundle.main.loadNibNamed("NibName", owner: nil, options: nil)![0] as! NibClassName
return obj
}

@IBAction func btnPressed(sender: UIButton) {
btnPressBlock!(true)
removeFromSuperview()
}

关于ios - 等待 X 秒或等待用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48822658/

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