我很快就能做到这一点,所以即使这对我来说有点复杂;对不起,如果我做的话听起来很蠢。
序: 我有一个主视图控制器(我们称之为viewA)和一个从.xib文件中获取其功能的UIView,让我们调用这个视图B
这一切都在单个主视图控制器页面中
问题: 所以我希望我的ViewController按顺序执行一堆方法,其中一个方法是从这个viewB中的函数调用结果(它是一个子视图,所以我不能使用segues)
所以在函数中我想只返回结果 -
解决这个问题最有效的方法是什么?
编辑: 简而言之,我想让我的主队列执行等待,直到有来自玩家的输入或30秒已经过去
代码结构:
ViewController:
class ViewController{
var viewB:CustomView
//methods
function to execute{
viewB.executeFunction()
}
}
CustomView:
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
}
}
答案 0 :(得分:0)
我认为选项1 更适合您的方案。按下笔尖按钮时可以调用块。以下是如何在swift中使用块的代码:
// 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()
}