ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 베이직반 실습
    카테고리 없음 2024. 7. 15. 19:14

    UI section 1

     

     

    UIsection 1 

    더보기
    import UIKit
    
    class ViewController: UIViewController {
        
        // UI 요소
        private let titleLabel: UILabel = {
            let label = UILabel()
            label.text = "Select your coffee:"
            label.font = .boldSystemFont(ofSize: 25)
            label.textColor = .black
            label.translatesAutoresizingMaskIntoConstraints = false
            return label
        }()
        
        private let segmentedControl: UISegmentedControl = {
            let segmentedControl = UISegmentedControl(items: ["Espresso - $3", "Latte - $4", "Cappuccino - $5"])
            segmentedControl.selectedSegmentIndex = 0
            segmentedControl.translatesAutoresizingMaskIntoConstraints = false
            return segmentedControl
        }()
        
        private let quantityLabel: UILabel = {
            let label = UILabel()
            label.text = "Enter quantity:"
            label.font = .boldSystemFont(ofSize: 25)
            label.textColor = .black
            label.translatesAutoresizingMaskIntoConstraints = false
            return label
        }()
        
        private let textField: UITextField = {
            let textField = UITextField()
            textField.placeholder = "수량을 입력해주세요."
            textField.borderStyle = .roundedRect
            textField.keyboardType = .numberPad
            textField.translatesAutoresizingMaskIntoConstraints = false
            return textField
        }()
        
        private lazy var orderButton: UIButton = {
            let button = UIButton()
            button.setTitle("order", for: .normal)
            button.setTitleColor(.systemBlue, for: .normal)
            button.translatesAutoresizingMaskIntoConstraints = false
            button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
            return button
        }()
        
        private let orderedLabel: UILabel = {
            let label = UILabel()
            label.text = "You orderd 3 Espresso(s). Total: $9" // 추후 바꾸기
            label.textAlignment = .center
            label.translatesAutoresizingMaskIntoConstraints = false
            return label
        }()
        
        override func viewDidLoad() {
            super.viewDidLoad()
            
            view.backgroundColor = .white
            
            // 뷰 생성
            [
                titleLabel,
                segmentedControl,
                quantityLabel,
                textField,
                orderButton,
                orderedLabel
            ].forEach { view.addSubview($0) }
            
            
            configureUI()
            
        }
        private func configureUI() {
            
            
            
            // 제약 조건
            NSLayoutConstraint.activate([
                
                // 타이틀 라벨 레이아웃
                titleLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor),
                titleLabel.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 40),
                
                // 세그먼트 컨트롤 레이아웃
                segmentedControl.heightAnchor.constraint(equalToConstant: 40),
                segmentedControl.topAnchor.constraint(equalTo: titleLabel.bottomAnchor, constant: 25),
                segmentedControl.centerXAnchor.constraint(equalTo: view.centerXAnchor),
                
                // 수량 라벨 레이아웃
                quantityLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor),
                quantityLabel.topAnchor.constraint(equalTo: segmentedControl.bottomAnchor, constant: 40),
                
                // 주문 수량 텍스트 필드 레이아웃
                textField.centerXAnchor.constraint(equalTo: view.centerXAnchor),
                textField.topAnchor.constraint(equalTo: quantityLabel.bottomAnchor, constant: 20),
                textField.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20),
                
                // 주문 버튼 레이아웃
                orderButton.centerXAnchor.constraint(equalTo: view.centerXAnchor),
                orderButton.topAnchor.constraint(equalTo: textField.bottomAnchor, constant: 50),
                
                // 주문 결과 라벨 레이아웃
                orderedLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor),
                orderedLabel.topAnchor.constraint(equalTo: orderButton.bottomAnchor, constant: 50),
                orderedLabel.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20)
            ])
            
            
        }
        
        // order button을 눌렀을 때 액션과 이벤트를 담당하는 메서드
        // 메뉴당 단가, 선택한 메뉴, 총 금액(메뉴당 단가 * 입력한 수량)
        @objc
        private func buttonTapped() {
            
            // 각 메뉴의 단가 배열
            let prices = [3, 4, 5]
            
            
            // 선택된 세그먼트의 인덱스를 가져와서 해당하는 메뉴의 단가를 가져옴
            let selectedMenuIndex = segmentedControl.selectedSegmentIndex
            
            // 선택된 커피 : 옵셔널 체이닝이나 널 병합 연산자라고 불리며, 옵셔널 값이 nil일 경우 대체할 기본 값을 설정
            let selectedMenu = segmentedControl.titleForSegment(at: selectedMenuIndex)?.components(separatedBy: " - ").first ?? "Unknown"
            
            let menuPrice = prices[selectedMenuIndex]
            
            // 텍스트 필드에서 입력된 수량 가져오기
            guard let quantityText = textField.text, let quantity = Int(quantityText) else {
                return
            }
            
            // totalPrice 구하기
            let totalPrice = menuPrice * quantity
    
            
            // buttonTapped 후 이벤트로 결과값 문구 출력
            
            // 디버깅용
            print("You ordered \(quantity) \(selectedMenu)(s). Total Price: $\(totalPrice).")
            
            // 화면에 띄우기
            orderedLabel.text = "You ordered \(quantity) \(selectedMenu)(s). Total Price: $\(totalPrice)."
            
        }
        
    }

    튜터님

    더보기
    class ViewController: UIViewController {
      // UI 요소 선언
      let coffeeLabel: UILabel = {
        let label = UILabel()
        label.translatesAutoresizingMaskIntoConstraints = false
        label.text = "Select your coffee:"
        label.font = UIFont.systemFont(ofSize: 18, weight: .bold)
        label.textAlignment = .center
        return label
      }()
      let coffeeSegmentedControl: UISegmentedControl = {
        let items = ["Espresso - $3", "Latte - $4", "Cappuccino - $5"]
        let segmentedControl = UISegmentedControl(items: items)
        segmentedControl.translatesAutoresizingMaskIntoConstraints = false
        segmentedControl.selectedSegmentIndex = 0
        return segmentedControl
      }()
      let quantityLabel: UILabel = {
        let label = UILabel()
        label.translatesAutoresizingMaskIntoConstraints = false
        label.text = "Enter quantity:"
        label.font = UIFont.systemFont(ofSize: 18, weight: .bold)
        label.textAlignment = .center
        return label
      }()
      let quantityTextField: UITextField = {
        let textField = UITextField()
        textField.translatesAutoresizingMaskIntoConstraints = false
        textField.placeholder = "Quantity"
        textField.borderStyle = .roundedRect
        textField.keyboardType = .numberPad
        return textField
      }()
      let orderButton: UIButton = {
        let button = UIButton(type: .system)
        button.translatesAutoresizingMaskIntoConstraints = false
        button.setTitle("Order", for: .normal)
        button.addTarget(self, action: #selector(orderButtonTapped), for: .touchUpInside)
        return button
      }()
      let resultLabel: UILabel = {
        let label = UILabel()
        label.translatesAutoresizingMaskIntoConstraints = false
        label.text = "Your order will appear here."
        label.textAlignment = .center
        label.numberOfLines = 0
        return label
      }()
      override func viewDidLoad() {
        super.viewDidLoad()
        // 뷰 설정
        view.backgroundColor = .white
        // 서브 뷰 추가
        view.addSubview(coffeeLabel)
        view.addSubview(coffeeSegmentedControl)
        view.addSubview(quantityLabel)
        view.addSubview(quantityTextField)
        view.addSubview(orderButton)
        view.addSubview(resultLabel)
        // 레이아웃 설정
        setupLayout()
      }
      func setupLayout() {
        NSLayoutConstraint.activate([
          // 커피 레이블 레이아웃
          coffeeLabel.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 40),
          coffeeLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor),
          // 세그먼트 컨트롤 레이아웃
          coffeeSegmentedControl.topAnchor.constraint(equalTo: coffeeLabel.bottomAnchor, constant: 20),
          coffeeSegmentedControl.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20),
          coffeeSegmentedControl.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20),
          // 수량 레이블 레이아웃
          quantityLabel.topAnchor.constraint(equalTo: coffeeSegmentedControl.bottomAnchor, constant: 20),
          quantityLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor),
          // 수량 텍스트 필드 레이아웃
          quantityTextField.topAnchor.constraint(equalTo: quantityLabel.bottomAnchor, constant: 10),
          quantityTextField.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20),
          quantityTextField.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20),
          // 주문 버튼 레이아웃
          orderButton.topAnchor.constraint(equalTo: quantityTextField.bottomAnchor, constant: 20),
          orderButton.centerXAnchor.constraint(equalTo: view.centerXAnchor),
          // 결과 레이블 레이아웃
          resultLabel.topAnchor.constraint(equalTo: orderButton.bottomAnchor, constant: 20),
          resultLabel.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20),
          resultLabel.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20)
        ])
      }
      @objc func orderButtonTapped() {
        let coffeePrices = [3, 4, 5]
        let selectedCoffeeIndex = coffeeSegmentedControl.selectedSegmentIndex
        let selectedCoffee = coffeeSegmentedControl.titleForSegment(at: selectedCoffeeIndex)?.components(separatedBy: " - ").first ?? "Unknown"
        let pricePerCoffee = coffeePrices[selectedCoffeeIndex]
        guard let quantityText = quantityTextField.text, let quantity = Int(quantityText), quantity > 0 else {
          resultLabel.text = "Please enter a valid quantity."
          return
        }
        let totalPrice = pricePerCoffee * quantity
        resultLabel.text = "You ordered \(quantity) \(selectedCoffee)(s). Total: $\(totalPrice)."
      }
    }

     

    UIsection 2까지 구현 

    UI section 2

    더보기
    //
    //  ViewController.swift
    //  basicUIPractice
    //
    //  Created by 단예진 on 7/9/24.
    //
    
    
    import UIKit
    
    class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
        
        // UI 요소
        private let titleLabel: UILabel = {
            let label = UILabel()
            label.text = "Select your coffee:"
            label.font = .boldSystemFont(ofSize: 25)
            label.textColor = .black
            label.translatesAutoresizingMaskIntoConstraints = false
            return label
        }()
        
        private let segmentedControl: UISegmentedControl = {
            let segmentedControl = UISegmentedControl(items: ["Espresso - $3", "Latte - $4", "Cappuccino - $5"])
            segmentedControl.selectedSegmentIndex = 0
            segmentedControl.translatesAutoresizingMaskIntoConstraints = false
            return segmentedControl
        }()
        
        private let quantityLabel: UILabel = {
            let label = UILabel()
            label.text = "Enter quantity:"
            label.font = .boldSystemFont(ofSize: 25)
            label.textColor = .black
            label.translatesAutoresizingMaskIntoConstraints = false
            return label
        }()
        
        private let textField: UITextField = {
            let textField = UITextField()
            textField.placeholder = "수량을 입력해주세요."
            textField.borderStyle = .roundedRect
            textField.keyboardType = .numberPad
            textField.translatesAutoresizingMaskIntoConstraints = false
            return textField
        }()
        
        private lazy var orderButton: UIButton = {
            let button = UIButton()
            button.setTitle("order", for: .normal)
            button.setTitleColor(.systemBlue, for: .normal)
            button.translatesAutoresizingMaskIntoConstraints = false
            button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
            return button
        }()
        
        //    private let orderedLabel: UILabel = {
        //        let label = UILabel()
        //        label.text = "You orderd 3 Espresso(s). Total: $9" // 추후 바꾸기
        //        label.textAlignment = .center
        //        label.translatesAutoresizingMaskIntoConstraints = false
        //        return label
        //    }()
        
        private let tableView: UITableView = {
            let tableView = UITableView()
            tableView.translatesAutoresizingMaskIntoConstraints = false
            tableView.register(UITableViewCell.self, forCellReuseIdentifier: "orderCell")
            return tableView
        }()
        
        private let totalLabel: UILabel = {
            let label = UILabel()
            label.text = "Total: $0"
            label.textColor = .black
            label.textAlignment = .center
            label.font = .boldSystemFont(ofSize: 30)
            label.translatesAutoresizingMaskIntoConstraints = false
            return label
        }()
        
        private var orders: [(coffee: String, quantity: Int, price: Int)] = []
        
        override func viewDidLoad() {
            super.viewDidLoad()
            
            view.backgroundColor = .white
            
            // 테이블뷰 델리게이트 및 데이터소스 설정
            tableView.delegate = self
            tableView.dataSource = self
            
            // 뷰 생성
            [
                titleLabel,
                segmentedControl,
                quantityLabel,
                textField,
                orderButton,
                //            orderedLabel,
                tableView,
                totalLabel
            ].forEach { view.addSubview($0) }
            
            
            configureUI()
            
        }
        private func configureUI() {
            
            
            
            NSLayoutConstraint.activate([
                    // titleLabel 레이아웃
                    titleLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor),
                    titleLabel.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 40),
                    
                    // segmentedControl 레이아웃
                    segmentedControl.topAnchor.constraint(equalTo: titleLabel.bottomAnchor, constant: 20),
                    segmentedControl.centerXAnchor.constraint(equalTo: view.centerXAnchor),
                    segmentedControl.widthAnchor.constraint(equalToConstant: 300),
                    
                    // quantityLabel 레이아웃
                    quantityLabel.topAnchor.constraint(equalTo: segmentedControl.bottomAnchor, constant: 40),
                    quantityLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor),
                    
                    // textField 레이아웃
                    textField.topAnchor.constraint(equalTo: quantityLabel.bottomAnchor, constant: 20),
                    textField.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20),
                    textField.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20),
                    
                    // orderButton 레이아웃
                    orderButton.topAnchor.constraint(equalTo: textField.bottomAnchor, constant: 50),
                    orderButton.centerXAnchor.constraint(equalTo: view.centerXAnchor),
                    
                    // tableView 레이아웃
                    tableView.topAnchor.constraint(equalTo: orderButton.bottomAnchor, constant: 20),
                    tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
                    tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
                    tableView.bottomAnchor.constraint(equalTo: totalLabel.topAnchor, constant: -20),
                    
                    // totalLabel 레이아웃
                    totalLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor),
                    totalLabel.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -20)
                ])
            
            
        }
        
        // order button을 눌렀을 때 액션과 이벤트를 담당하는 메서드
        // 메뉴당 단가, 선택한 메뉴, 총 금액(메뉴당 단가 * 입력한 수량)
        @objc
        private func buttonTapped() {
            
            guard let quantityText = textField.text, let quantity = Int(quantityText) else {
                print("수량이 올바르게 입력되지 않았습니다.")
                return
            }
            
            
            
            // 각 메뉴의 단가 배열
            let prices = [3, 4, 5]
            
            
            // 선택된 세그먼트의 인덱스를 가져와서 해당하는 메뉴의 단가를 가져옴
            let selectedMenuIndex = segmentedControl.selectedSegmentIndex
            
            // 선택된 커피 : 옵셔널 체이닝이나 널 병합 연산자라고 불리며, 옵셔널 값이 nil일 경우 대체할 기본 값을 설정
            let selectedMenu = segmentedControl.titleForSegment(at: selectedMenuIndex)?.components(separatedBy: " - ").first ?? "Unknown"
            
            let menuPrice = prices[selectedMenuIndex]
            
            // 텍스트 필드에서 입력된 수량 가져오기
            guard let quantityText = textField.text, let quantity = Int(quantityText) else {
                return
            }
            
            // totalPrice 구하기
            let totalPrice = menuPrice * quantity
            
            // 주문 내역에 추가
            let order = (coffee: selectedMenu, quantity: quantity, price: totalPrice)
            orders.append(order)
            
            // buttonTapped 후 이벤트로 결과값 문구 출력
            
            // 디버깅용
            print("You ordered \(quantity) \(selectedMenu)(s). Total Price: $\(totalPrice).")
            
            // 화면에 띄우기
            //        orderedLabel.text = "You ordered \(quantity) \(selectedMenu)(s). Total Price: $\(totalPrice)."
            
            // 테이블뷰 데이터 리로드 및 총금액 업데이트
            tableView.reloadData()
            updateTotalLabel()
            
        }
        
        func updateTotalLabel() {
            let totalAmount = orders.reduce(0) { $0 + $1.price }
            totalLabel.text = "Total: $\(totalAmount)"
        }
        
        // 테이블뷰 데이터 소스 메서드
        func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            return orders.count
        }
        
        func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            let cell = tableView.dequeueReusableCell(withIdentifier: "orderCell", for: indexPath)
            let order = orders[indexPath.row]
            cell.textLabel?.text = "\(order.quantity) x \(order.coffee) - $\(order.price)"
            return cell
        }
    }

    튜터님

    더보기
    class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
       
      // UI 요소 선언
      let coffeeLabel: UILabel = {
        let label = UILabel()
        label.translatesAutoresizingMaskIntoConstraints = false
        label.text = "Select your coffee:"
        label.font = UIFont.systemFont(ofSize: 18, weight: .bold)
        label.textAlignment = .center
        return label
      }()
       
      let coffeeSegmentedControl: UISegmentedControl = {
        let items = ["Espresso - $3", "Latte - $4", "Cappuccino - $5"]
        let segmentedControl = UISegmentedControl(items: items)
        segmentedControl.translatesAutoresizingMaskIntoConstraints = false
        segmentedControl.selectedSegmentIndex = 0
        return segmentedControl
      }()
       
      let quantityLabel: UILabel = {
        let label = UILabel()
        label.translatesAutoresizingMaskIntoConstraints = false
        label.text = "Enter quantity:"
        label.font = UIFont.systemFont(ofSize: 18, weight: .bold)
        label.textAlignment = .center
        return label
      }()
       
      let quantityTextField: UITextField = {
        let textField = UITextField()
        textField.translatesAutoresizingMaskIntoConstraints = false
        textField.placeholder = "Quantity"
        textField.borderStyle = .roundedRect
        textField.keyboardType = .numberPad
        return textField
      }()
       
      let orderButton: UIButton = {
        let button = UIButton(type: .system)
        button.translatesAutoresizingMaskIntoConstraints = false
        button.setTitle("Order", for: .normal)
        button.addTarget(self, action: #selector(orderButtonTapped), for: .touchUpInside)
        return button
      }()
       
      let tableView: UITableView = {
        let tableView = UITableView()
        tableView.translatesAutoresizingMaskIntoConstraints = false
        tableView.register(UITableViewCell.self, forCellReuseIdentifier: "orderCell")
        return tableView
      }()
       
      let totalLabel: UILabel = {
        let label = UILabel()
        label.translatesAutoresizingMaskIntoConstraints = false
        label.text = "Total: $0"
        label.font = UIFont.systemFont(ofSize: 18, weight: .bold)
        label.textAlignment = .center
        return label
      }()
       
      var orders: [(coffee: String, quantity: Int, price: Int)] = []
       
      override func viewDidLoad() {
        super.viewDidLoad()
         
        // 뷰 설정
        view.backgroundColor = .white
         
        // 테이블 뷰 델리게이트 및 데이터 소스 설정
        tableView.delegate = self
        tableView.dataSource = self
         
        // 서브 뷰 추가
        view.addSubview(coffeeLabel)
        view.addSubview(coffeeSegmentedControl)
        view.addSubview(quantityLabel)
        view.addSubview(quantityTextField)
        view.addSubview(orderButton)
        view.addSubview(tableView)
        view.addSubview(totalLabel)
         
        // 레이아웃 설정
        setupLayout()
      }
       
      func setupLayout() {
        NSLayoutConstraint.activate([
          // 커피 레이블 레이아웃
          coffeeLabel.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 20),
          coffeeLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor),
           
          // 세그먼트 컨트롤 레이아웃
          coffeeSegmentedControl.topAnchor.constraint(equalTo: coffeeLabel.bottomAnchor, constant: 10),
          coffeeSegmentedControl.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20),
          coffeeSegmentedControl.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20),
           
          // 수량 레이블 레이아웃
          quantityLabel.topAnchor.constraint(equalTo: coffeeSegmentedControl.bottomAnchor, constant: 20),
          quantityLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor),
           
          // 수량 텍스트 필드 레이아웃
          quantityTextField.topAnchor.constraint(equalTo: quantityLabel.bottomAnchor, constant: 10),
          quantityTextField.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20),
          quantityTextField.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20),
           
          // 주문 버튼 레이아웃
          orderButton.topAnchor.constraint(equalTo: quantityTextField.bottomAnchor, constant: 20),
          orderButton.centerXAnchor.constraint(equalTo: view.centerXAnchor),
           
          // 테이블 뷰 레이아웃
          tableView.topAnchor.constraint(equalTo: orderButton.bottomAnchor, constant: 20),
          tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
          tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
          tableView.bottomAnchor.constraint(equalTo: totalLabel.topAnchor, constant: -10),
           
          // 총 금액 레이블 레이아웃
          totalLabel.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -20),
          totalLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor)
        ])
      }
       
      @objc func orderButtonTapped() {
        let coffeePrices = [3, 4, 5]
        let selectedCoffeeIndex = coffeeSegmentedControl.selectedSegmentIndex
        let selectedCoffee = coffeeSegmentedControl.titleForSegment(at: selectedCoffeeIndex)?.components(separatedBy: " - ").first ?? "Unknown"
        let pricePerCoffee = coffeePrices[selectedCoffeeIndex]
         
        guard let quantityText = quantityTextField.text, let quantity = Int(quantityText), quantity > 0 else {
          showAlert(message: "Please enter a valid quantity.")
          return
        }
         
        let totalPrice = pricePerCoffee * quantity
        orders.append((coffee: selectedCoffee, quantity: quantity, price: totalPrice))
         
        tableView.reloadData()
        updateTotalLabel()
      }
       
      func showAlert(message: String) {
        let alert = UIAlertController(title: "Error", message: message, preferredStyle: .alert)
        alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
        present(alert, animated: true, completion: nil)
      }
       
      func updateTotalLabel() {
        let totalAmount = orders.reduce(0) { $0 + $1.price }
        totalLabel.text = "Total: $\(totalAmount)"
      }
       
      // 테이블 뷰 데이터 소스 메서드
      func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return orders.count
      }
       
      func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "orderCell", for: indexPath)
        let order = orders[indexPath.row]
        cell.textLabel?.text = "\(order.quantity) x \(order.coffee) - $\(order.price)"
        return cell
      }
       
      // 테이블 뷰 델리게이트 메서드
      func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        tableView.deselectRow(at: indexPath, animated: true)
      }
    }