UIBUTTON titlelabel.text 不显示

本文讨论了如何在不同状态下使用UIButton的title和state属性来实现文本的正确显示,通过实例展示了设置title和相应state的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考网页:http://www.cocoachina.com/bbs/simple/?t13267.html

button.titlelabel.text=@"查询";设置后运行发现没事正确显示。

查找后原来UIButton分状态的,textLabel不管用

[button setTitle:@" " forState:UIControlStateNormal];

需要设置title和相应的state。
// // TravelInfoListViewCell.swift // travel-wxsl // // Created by PanRuiMing on 2025/7/31. // import UIKit class TravelInfoListViewCell: UIView { private lazy var travleTitleLabel: UILabel = { let l = UILabel() l.font = .systemFont(ofSize: 18) l.text = "行程" return l }() private lazy var addressHStackView: UIStackView = { let stackView = UIStackView() stackView.axis = .horizontal stackView.distribution = .fill stackView.alignment = .center stackView.spacing = 20 return stackView }() private lazy var startAddressLabel: UILabel = { let l = UILabel() l.font = .systemFont(ofSize: 18) l.text = "选择出发地" l.textColor = .gray return l }() private lazy var endAddressLabel: UILabel = { let l = UILabel() l.font = .systemFont(ofSize: 18) l.text = "选择抵达地" l.textColor = .gray return l }() private lazy var dateTitleLabel: UILabel = { let l = UILabel() l.font = .systemFont(ofSize: 18) l.text = "出行时间" return l }() private lazy var dateHStackView: UIStackView = { let stackView = UIStackView() stackView.axis = .horizontal stackView.distribution = .fill stackView.alignment = .center stackView.spacing = 20 return stackView }() private lazy var startDateLabel: UILabel = { let l = UILabel() l.font = .systemFont(ofSize: 18) l.text = "选择出发时间" return l }() private lazy var endDateLabel: UILabel = { let l = UILabel() l.font = .systemFont(ofSize: 18) l.text = "选择返程时间" return l }() private lazy var travelTypeTitleLabel: UILabel = { let l = UILabel() l.font = .systemFont(ofSize: 18) l.text = "差旅产品" return l }() private lazy var travelTypeHStackView: UIStackView = { let stackView = UIStackView() stackView.axis = .horizontal stackView.distribution = .fill stackView.alignment = .center stackView.spacing = 6 stackView.isUserInteractionEnabled = true return stackView }() private lazy var planeTypeTitleLabel: UILabel = { let l = UILabel() l.font = .systemFont(ofSize: 18) l.text = "机票类型" return l }() private lazy var planeTypeHSatckView: UIStackView = { let stackView = UIStackView() stackView.axis = .horizontal stackView.distribution = .fill stackView.alignment = .center stackView.spacing = 6 return stackView }() private lazy var singleBtn: UIButton = { let btn = UIButton() btn.layer.borderWidth = 1 btn.layer.cornerRadius = 5 btn.setTitle("单程", for: .normal) btn.titleLabel?.font = .systemFont(ofSize: 15) return btn }() private lazy var roundBtn: UIButton = { let btn = UIButton() btn.layer.borderWidth = 1 btn.layer.cornerRadius = 5 btn.setTitle("往返", for: .normal) btn.titleLabel?.font = .systemFont(ofSize: 15) return btn }() override init(frame: CGRect) { super.init(frame: frame) } required init?(coder: NSCoder) { super.init(coder: coder) } private func setupUI(with travelInfo: TravelInfoModel) { let hLine1 = CreateViews.createLine(for: .horizontal) let hLine2 = CreateViews.createLine(for: .horizontal) let hLine3 = CreateViews.createLine(for: .horizontal) let sLine1 = CreateViews.createLine(for: .horizontal, with: .black) let sLine2 = CreateViews.createLine(for: .horizontal, with: .black) backgroundColor = .white addSubview(travleTitleLabel) addSubview(addressHStackView) addressHStackView.addArrangedSubview(startAddressLabel) addressHStackView.addArrangedSubview(sLine1) addressHStackView.addArrangedSubview(endAddressLabel) addSubview(hLine1) addSubview(dateTitleLabel) addSubview(dateHStackView) dateHStackView.addArrangedSubview(startDateLabel) dateHStackView.addArrangedSubview(sLine2) dateHStackView.addArrangedSubview(endDateLabel) addSubview(hLine2) addSubview(travelTypeTitleLabel) addSubview(travelTypeHStackView) addSubview(hLine3) for (_, item) in travelInfo.travelType.enumerated() { let selected = item["selected"] as! Bool let travelType = item["travelType"] as! TravelType let typeBtn = UIButton() typeBtn.titleLabel?.font = .systemFont(ofSize: 15) typeBtn.isSelected = selected if selected { typeBtn.layer.borderColor = UIColor.blueTextColor.cgColor typeBtn.setTitleColor(.blueTextColor, for: .normal) } else { typeBtn.layer.borderColor = UIColor.lightGray.cgColor typeBtn.setTitleColor(.black, for: .normal) } typeBtn.layer.borderWidth = 1 typeBtn.layer.cornerRadius = 5 typeBtn.isUserInteractionEnabled = true typeBtn.addTarget(self, action: #selector(travelTypeBtnAction(_:)), for: .touchUpInside) switch travelType { case .plane: typeBtn.setTitle("飞机", for: .normal) case .train: typeBtn.setTitle("火车", for: .normal) case .hotel: typeBtn.setTitle("酒店", for: .normal) case .useCar: typeBtn.setTitle("用车", for: .normal) } travelTypeHStackView.addArrangedSubview(typeBtn) typeBtn.snp.makeConstraints({ maker in maker.height.equalTo(32) maker.width.equalTo(55) }) } addSubview(hLine3) addSubview(planeTypeTitleLabel) addSubview(planeTypeHSatckView) planeTypeHSatckView.addArrangedSubview(singleBtn) planeTypeHSatckView.addArrangedSubview(roundBtn) hLine1.snp.makeConstraints({ maker in maker.leading.equalToSuperview().offset(15) maker.trailing.equalToSuperview().offset(-15) maker.top.equalTo(travleTitleLabel.snp.bottom).offset(15) }) hLine2.snp.makeConstraints({ maker in maker.leading.equalToSuperview().offset(15) maker.trailing.equalToSuperview().offset(-15) maker.top.equalTo(dateTitleLabel.snp.bottom).offset(15) }) hLine3.snp.makeConstraints({ maker in maker.leading.equalToSuperview().offset(15) maker.trailing.equalToSuperview().offset(-15) maker.top.equalTo(travelTypeTitleLabel.snp.bottom).offset(15) }) sLine1.snp.makeConstraints({ maker in maker.width.equalTo(18) }) sLine2.snp.makeConstraints({ maker in maker.width.equalTo(18) }) travleTitleLabel.snp.makeConstraints({ maker in maker.leading.top.equalToSuperview().offset(15) maker.trailing.lessThanOrEqualToSuperview().offset(-15) }) addressHStackView.snp.makeConstraints({ maker in maker.leading.equalTo(travleTitleLabel.snp.trailing).offset(50) maker.centerY.equalTo(travleTitleLabel.snp.centerY) }) dateTitleLabel.snp.makeConstraints({ maker in maker.leading.equalToSuperview().offset(15) maker.top.equalTo(hLine1.snp.bottom).offset(15) maker.trailing.lessThanOrEqualToSuperview().offset(-15) }) dateHStackView.snp.makeConstraints({ maker in maker.leading.equalTo(addressHStackView.snp.leading) maker.centerY.equalTo(dateTitleLabel.snp.centerY) }) travelTypeTitleLabel.snp.makeConstraints({ maker in maker.leading.equalToSuperview().offset(15) maker.top.equalTo(hLine2.snp.bottom).offset(15) maker.trailing.lessThanOrEqualToSuperview().offset(-15) maker.bottom.equalToSuperview().offset(-18).priority(.low) }) travelTypeHStackView.snp.makeConstraints({ maker in maker.leading.equalTo(addressHStackView.snp.leading) maker.centerY.equalTo(travelTypeTitleLabel.snp.centerY) }) planeTypeTitleLabel.snp.makeConstraints({ maker in maker.leading.equalToSuperview().offset(15) maker.top.equalTo(hLine3.snp.bottom).offset(15) maker.trailing.lessThanOrEqualToSuperview().offset(-15) maker.bottom.equalToSuperview().offset(-18) }) planeTypeHSatckView.snp.makeConstraints({ maker in maker.leading.equalTo(addressHStackView.snp.leading) maker.centerY.equalTo(planeTypeTitleLabel.snp.centerY) }) singleBtn.snp.makeConstraints({ maker in maker.height.equalTo(32) maker.width.equalTo(55) }) roundBtn.snp.makeConstraints({ maker in maker.height.equalTo(32) maker.width.equalTo(55) }) switch travelInfo.planeTicketType { case .single: singleBtn.layer.borderColor = UIColor.blueTextColor.cgColor singleBtn.setTitleColor(.blueTextColor, for: .normal) roundBtn.layer.borderColor = UIColor.lightGray.cgColor roundBtn.setTitleColor(.black, for: .normal) case .round: roundBtn.layer.borderColor = UIColor.blueTextColor.cgColor roundBtn.setTitleColor(.blueTextColor, for: .normal) singleBtn.layer.borderColor = UIColor.lightGray.cgColor singleBtn.setTitleColor(.black, for: .normal) } } func setData(with travelInfo: TravelInfoModel) { updateData(with: travelInfo) setupUI(with: travelInfo) } func updateData(with travelInfo: TravelInfoModel) { travleTitleLabel.text = "行程\(travelInfo.position)" if travelInfo.startAddress == "" { startAddressLabel.text = "选择出发地" startAddressLabel.textColor = .gray } else { startAddressLabel.text = travelInfo.startAddress startAddressLabel.textColor = .black } if travelInfo.endAddress == "" { endAddressLabel.text = "选择抵达地" endAddressLabel.textColor = .gray } else { endAddressLabel.text = travelInfo.endAddress endAddressLabel.textColor = .black } startDateLabel.text = travelInfo.startDate endDateLabel.text = travelInfo.endDate } @objc private func travelTypeBtnAction(_ sender: UIButton) { print("-----") sender.isSelected.toggle() if sender.isSelected { sender.layer.borderColor = UIColor.blueTextColor.cgColor sender.setTitleColor(.blueTextColor, for: .normal) } else { sender.layer.borderColor = UIColor.lightGray.cgColor sender.setTitleColor(.black, for: .normal) } if sender.title(for: .normal) == "飞机" { if sender.isSelected { planeTypeTitleLabel.isHidden = false planeTypeHSatckView.isHidden = false } else { planeTypeTitleLabel.isHidden = true planeTypeHSatckView.isHidden = true } } } } 这段代码为什么typeBtn点击执行方法
最新发布
08-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值