在 Xcode 12 上运行应用程序时按钮不起作用 [重复]
Posted
技术标签:
【中文标题】在 Xcode 12 上运行应用程序时按钮不起作用 [重复]【英文标题】:Buttons not working when running app on Xcode 12 [duplicate] 【发布时间】:2020-09-28 23:31:58 【问题描述】:我使用的是版本 12.0.1 (12A7300)。我在 UIViews 上有一些按钮,在 UITableViewCells 中有一些按钮。表格单元格内按钮的操作位于我使用协议访问的父视图控制器中。在模拟器或我的设备上运行应用程序时。所有按钮都是以编程方式添加的。按钮不起作用。我重新安装了 Xcode 版本 11.7 (11E801a),一切正常。
有什么办法可以解决这个问题?这是一个错误还是发生了一些变化而我不知道?
这是我的代码示例。在 UITableViewCell 中:
var addToCartDelegate: AddToCartDelegate?
let addToCartButton: UIButton =
let button = UIButton()
return button
()
let applePayButton: PKPaymentButton =
let button = PKPaymentButton(paymentButtonType: .buy, paymentButtonStyle: .whiteOutline)
return button
()
func configureAddToCartButton()
let button = addToCartButton
button.setTitle("Add To Cart", for: .normal)
button.titleLabel?.font = getScaledFont(forFont: Fonts.bold, textStyle: .body)
button.setTitleColor(Colors.primaryButtonTintColor, for: .normal)
button.tintColor = Colors.primaryButtonTintColor
button.backgroundColor = Colors.primaryButtonBackgroundColor
button.layer.cornerRadius = Attributes.cornerRadius
button.addTarget(self, action: #selector(addToCartButtonWasTapped), for: .touchUpInside)
func configureStackView()
var stackView = UIStackView()
if useApplePay
stackView = UIStackView(arrangedSubviews: [addToCartButton, applePayButton])
else
stackView = UIStackView(arrangedSubviews: [addToCartButton])
stackView.axis = .horizontal
stackView.spacing = 16
stackView.distribution = .fillEqually
addSubview(stackView)
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true
stackView.heightAnchor.constraint(equalToConstant: 44).isActive = true
stackView.rightAnchor.constraint(equalTo: rightAnchor, constant: -16).isActive = true
stackView.leftAnchor.constraint(equalTo: leftAnchor, constant: 16).isActive = true
@objc func addToCartButtonWasTapped()
addToCartDelegate?.addItemToCart()
@objc func applePayButtonWasTapped()
addToCartDelegate?.buyWithApplePay()
【问题讨论】:
刚刚测试了 Xcode 12 的新副本。按钮仍然不起作用。使用 Xcode 11.7 时一切正常。我会等到 Xcode 12 的几个更新发布。 如何将按钮添加到表格单元格?addSubview
或 contentView.addSubview
?
对于这个特定的按钮,我有一个表格视图标题tableView.tableHeaderView = tableViewHeader
,我使用 addSubView 添加按钮,如tableViewHeader.addSubview(editProfileButton)
。我正在添加到 stackview 中的其他按钮,并且我再次使用 addSubView 将 StackView 添加到 tableviewcell。我没有想到使用 contentView 添加它们。我会试试看是否有效。
【参考方案1】:
您不应该直接将内容添加到单元格的视图中。相反,应该使用contentView.addSubview()
将内容添加到单元格的contentView
。在 ios 14 中,单元格的 contentView
出现在上方直接添加到单元格的内容中。这实际上将禁止用户与这些项目进行交互,因为contentView
将吸收所有交互。见下图:
在 iOS 14 之前,请注意添加到单元格的所有视图后面的 contentView
iOS 14 及更高版本,注意contentView
位于所有直接添加到单元格的视图前面
【讨论】:
问题原来是关于标题视图,而不是单元格。你的猜测肯定是对的,但你应该说的是 UITableViewHeaderFooterView,而不是 UITableViewCell。 问题状态 - “表格单元格内按钮的操作位于我使用协议访问的父视图控制器中。”提供的示例代码来自标题......也许可以编辑问题措辞或提供的代码?无论哪种方式,对我和 GIJoeCodes 来说都是很好的学习机会。 我编辑了提供的代码,因为它是错误的代码。虽然我“WAS”在这两个元素上都有问题,但我最初应该添加显示的代码。【参考方案2】:按钮是否可见?
确保您使用了 configureEditProfileButton() 函数并将“editProfileButton”添加到主视图。
【讨论】:
按钮是可见的,正如我所提到的,一切都在 Xcode 11 中运行。我删除了 Xcode 12,我正在重新安装它。也许新版本可以正常工作。以上是关于在 Xcode 12 上运行应用程序时按钮不起作用 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 9 更新后 pushViewController 不起作用