我需要帮助以某种方式更改分段控件的背景图像,只有红色有效

问题描述 投票:0回答:0

我是 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 更改为其他背景(如白色等)时,它不起作用,但当我将其更改为红色时,它工作得很好。有人可以告诉我我做错了什么吗?

ios swift uikit uisegmentedcontrol
© www.soinside.com 2019 - 2024. All rights reserved.