gpt4 book ai didi

ios - Swift普通类无法接收来自UIButton的触摸事件

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

我正在尝试为一组按钮创建一个单独的类来处理一次仅选择一个按钮的逻辑(单选按钮)

逻辑在这里并不重要。当我点击这些按钮之一时,我无法接收 touchUpIndside 事件。

我将目标设置为 self(自定义 RadionButtonsController 类),但该类无法接收事件。

我尝试将 UIResponder 添加为父类(super class)。但在这个类中仍然无法接收到事件。

这是我的代码:

import UIKit

class RadioButtonsController: UIResponder
{
var buttons = [UIButton]()
var selectedValue: String?

init(numberOfButtons: Int, titles: [String], values: [String])
{
guard titles.count == numberOfButtons && values.count == numberOfButtons else
{
fatalError("number of items in `titles` and `values` must equal to the `numberOfButtons`")
}

super.init()

for i in 0..<numberOfButtons
{
let button = UIButton(type: .system)
button.setTitle(titles[i], for: .normal)
button.backgroundColor = [UIColor.red, UIColor.blue, UIColor.gray, UIColor.yellow].randomElement()
button.addTarget(self, action: #selector(radioButtonSelected(sender:)), for: .touchUpInside)
buttons.append(button)
}
}

@objc private func radioButtonSelected(sender: UIButton)
{
print("Selected Button: \(sender)") // this is will never get printed
}


}

我在 TableView 单元格中使用这个按钮 Controller 。在 cellForRowAtIndexPath 中:

let itemOptionsCell = tableView.dequeueReusableCell(withIdentifier: "ItemOptionsCell", for: indexPath) as! ItemOptionsTableViewCell
let itemOption = logicController.item.options[indexPath.row]
itemOptionsCell.optionsTitleLabel.text = itemOption.name

let radioButtonsController = RadioButtonsController(numberOfButtons: itemOption.values.count,
titles: itemOption.values.map({ $0.name }),
values: itemOption.values.map({ $0.valueID }))
for button in radioButtonsController.buttons
{
itemOptionsCell.buttonsStackView.addArrangedSubview(button)
}

return itemOptionsCell

按钮似乎被单击,但方法 radionButtonSelected(snder:) 从未被调用。

最佳答案

问题是您的代码创建了一个 RadioButtonsController 对象,然后将其丢弃。因此,您的按钮没有人可以向其发送操作。

关于ios - Swift普通类无法接收来自UIButton的触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53572603/

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