我是 UIKit 的新手,我正在为一个项目开发一个购物车页面,几乎一切都很顺利,几乎没有什么麻烦,但是一旦我开始使用分段控件来设置它的样式,我几乎什么都做不了,因为它没有'接受我所做的更改。 这是分段控件的代码:
import UIKit
class ShoppingCartViewController: UIViewController {
let segmentedControl = UISegmentedControl()
let cartView = UIView()
let wishlistView = UIView()
var customTableViewController: CustomTableViewController?
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .systemBackground
// Create the table view controller
customTableViewController = CustomTableViewController()
customTableViewController?.view.translatesAutoresizingMaskIntoConstraints = false
cartView.addSubview(customTableViewController!.view)
// Set up segmented control
segmentedControl.insertSegment(withTitle: "Cart", at: 0, animated: true)
segmentedControl.insertSegment(withTitle: "Wishlist", at: 1, animated: true)
segmentedControl.addTarget(self, action: #selector(segmentedControlValueChanged(_:)), for: .valueChanged)
segmentedControl.backgroundColor = UIColor.red
// Set up cart view
cartView.clipsToBounds = true
// Set up table view
customTableViewController?.view.translatesAutoresizingMaskIntoConstraints = false
cartView.addSubview(customTableViewController!.view)
// Set up wishlist view
wishlistView.isHidden = true
// Add subviews
view.addSubview(segmentedControl)
view.addSubview(cartView)
view.addSubview(wishlistView)
// Set up constraints
segmentedControl.translatesAutoresizingMaskIntoConstraints = false
cartView.translatesAutoresizingMaskIntoConstraints = false
wishlistView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
segmentedControl.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 49),
segmentedControl.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20),
segmentedControl.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20),
segmentedControl.heightAnchor.constraint(equalToConstant: 40),
cartView.topAnchor.constraint(equalTo: segmentedControl.bottomAnchor, constant: 16),
cartView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
cartView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
cartView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
customTableViewController!.view.topAnchor.constraint(equalTo: cartView.topAnchor,constant: 28),
customTableViewController!.view.bottomAnchor.constraint(equalTo: cartView.bottomAnchor, constant: -100),
customTableViewController!.view.leadingAnchor.constraint(equalTo: cartView.leadingAnchor, constant: 20),
customTableViewController!.view.trailingAnchor.constraint(equalTo: cartView.trailingAnchor),
])
// Add back button to navigation bar
let backButton = UIBarButtonItem(image: UIImage(systemName: "chevron.left"), style: .plain, target: self, action: #selector(backButtonTapped))
navigationItem.leftBarButtonItem = backButton
}
@objc func backButtonTapped() {
// Pop the current view controller off the navigation stack
navigationController?.popViewController(animated: true)
// Get a reference to the tab bar controller
if let tabBarController = navigationController?.tabBarController {
// Set the home view controller as the selected view controller
tabBarController.selectedIndex = 0
}
}
@objc func segmentedControlValueChanged(_ sender: UISegmentedControl) {
switch sender.selectedSegmentIndex{
case 0:
cartView.isHidden = false
wishlistView.isHidden = true
case 1:
cartView.isHidden = true
wishlistView.isHidden = false
default:
break
}
}
}
非凡的是,当我尝试将 backgroundColor 更改为其他背景(如白色等)时,它不起作用,但当我将其更改为红色时,它工作得很好。有人可以告诉我我做错了什么吗?