Ios 如何获取在另一个视图的UIView中点击哪个特定按钮的信息
我想在我的应用程序中添加一个倒计时选项。有4种方法可以选择倒计时时间。我制作了一个单独的UIView,我把它命名为BreakTimeView。我有4个按钮。我想在按下其中一个按钮时在主viewController中获取信息。我想让这个信息给我一个计时器倒计时的具体秒数。我知道如果我在主viewController中从头开始创建此视图,我可以触发自己的操作。但是我不知道如果按钮在一个单独的视图中,如何通过这个秒数(Int)。我做了一些类似的事情,但在我看来这看起来并不好,问题是我如何才能做得更好/更聪明Ios 如何获取在另一个视图的UIView中点击哪个特定按钮的信息,ios,swift,uibutton,uikit,Ios,Swift,Uibutton,Uikit,我想在我的应用程序中添加一个倒计时选项。有4种方法可以选择倒计时时间。我制作了一个单独的UIView,我把它命名为BreakTimeView。我有4个按钮。我想在按下其中一个按钮时在主viewController中获取信息。我想让这个信息给我一个计时器倒计时的具体秒数。我知道如果我在主viewController中从头开始创建此视图,我可以触发自己的操作。但是我不知道如果按钮在一个单独的视图中,如何通过这个秒数(Int)。我做了一些类似的事情,但在我看来这看起来并不好,问题是我如何才能做得更好/
class ViewController: UIViewController {
var value: Int = 0
var bV = BreakTimeView()
override func viewDidLoad() {
super.viewDidLoad()
bV = BreakTimeView(frame: CGRect(x: 0,
y: view.frame.maxY + 50,
width: view.frame.size.width,
height: view.frame.size.width))
view.addSubview(bV)
let tap = UITapGestureRecognizer(target: self, action: #selector(animate))
view.addGestureRecognizer(tap)
bV.checkButtonPressed = {
self.value = 30
print(self.value)
}
bV.checkButtonPressed2 = {
self.value = 45
print(self.value)
}
bV.checkButtonPressed3 = {
self.value = 60
print(self.value)
}
bV.checkButtonPressed4 = {
self.value = 90
print(self.value)
}
}
@objc func animate(){
UIView.animate(withDuration: 1) {
self.bV.transform = CGAffineTransform(translationX: 0, y: -self.bV.frame.size.width - 50)
} completion: { completed in
print("Ekran wjechał")
}
}
}
当然,我不会在应用程序中打印秒数,但我会将它传递给一个支持计时器的单独函数,但为了演示的目的,我只在
BreakTimeView
中包含此替换这些回调-
var checkButtonPressed : (() -> ()) = {}
var checkButtonPressed2 : (() -> ()) = {}
var checkButtonPressed3 : (() -> ()) = {}
var checkButtonPressed4 : (() -> ()) = {}
与
现在,您的按钮操作将如下所示
@objc private func action1() {
checkButtonPressed(30)
}
@objc private func action2() {
checkButtonPressed(45)
}
@objc private func action3() {
checkButtonPressed(60)
}
@objc private func action4() {
checkButtonPressed(90)
}
在呼叫站点,它看起来是这样的-
bV.checkButtonPressed = { [weak self] (numberOfSeconds) in
self?.value = numberOfSeconds
print(numberOfSeconds)
}
太棒了,谢谢你!
@objc private func action1() {
checkButtonPressed(30)
}
@objc private func action2() {
checkButtonPressed(45)
}
@objc private func action3() {
checkButtonPressed(60)
}
@objc private func action4() {
checkButtonPressed(90)
}
bV.checkButtonPressed = { [weak self] (numberOfSeconds) in
self?.value = numberOfSeconds
print(numberOfSeconds)
}