[Swift]메르카리 같은 수수료를 자동 계산하는 프로그램 구현

5996 단어 Swift메르카리
메르카리로 상품을 출품한 적이 있는 분이라면 아시겠지만, 판매 가격을 설정할 때 임의의 금액을 입력하면 자동(실시간)에 수수료와 판매 이익이 산출되어 텍스트에 반영됩니다. 루 같은 녀석을 본 적이 있지 않을까 생각합니다.

그래서 이번에는 그 방법을 쓰고 싶습니다.

그럼 가자!

소개



우선, storyBoard에서 이런 느낌을 준비해 주세요



본질적으로는, ①사용자가 실제로 금액을 입력하는 부분의 TextField, ②계산된 수수료를 반영하는 UILabel, ③계산된 판매이익을 반영하는 UILabel의 3가지가 존재하고 있을 뿐입니다.

글쎄, 멋지게 보이기 위해이 세 가지 textAlign을 모두 맞추는 것이 좋다고 생각합니다.

이제 코드로 이동합니다.

코드



우선은 전체상으로부터입니다.
import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var settingFeeTextField: UITextField! //入力する部分
    @IBOutlet weak var commissionLabel: UILabel! //手数料を算出する部分
    @IBOutlet weak var finalFeeLabel: UILabel! //最終的な収益を算出する部分

    override func viewDidLoad() {
        super.viewDidLoad()

        settingFeeTextField.keyboardType = .numberPad//数字のみ入力可にする

        NotificationCenter.default.addObserver(self, selector: selector(textFieldDidChange(notification:)), name: UITextField.textDidChangeNotification, object: settingFeeTextField)
    }

    deinit {
        NotificationCenter.default.removeObserver(self)
    }

    @objc private func textFieldDidChange(notification:NSNotification){

        let textField = notification.object as! UITextField

        let toIntFeeTextField = Int(textField.text!)

        let ToZero = toIntFeeTextField ?? 0 

        let calculateCommission = ToZero / 10//10%の手数料

        commissionLabel.text = String(calculateCommission)

        finalFeeLabel.text = String(ToZero - calculateCommission)


    }

}

그럼 간단히 해설해 갑니다.

먼저 숫자만 입력하고 싶기 때문에 키보드 유형을 숫자로만 변경합니다.

그런 다음 TextField 이벤트가 발화되었을 때 알림을 받으려면 NotificationCenter를 설치합니다. (※UITextField가 독자적으로 가지는 메소드를 사용해도 좋다고 생각합니다.)

그리고 그 메소드 안에서, 계산을 하기 위해서 String형을 Int형으로 변경합시다.

그리고 글쎄, 그 후에는 그 계산 결과를 String 형으로 재 캐스팅하고 반영한다는 느낌입니다.

이상입니다!

(※ 덧붙여서, 텍스트 필드의 값을 nil 결합으로 0을 넣어 두지 않으면, 값이 1 이하가되었을 때 에러가 나오므로 주의해 주세요.아, 그리고 수수료는 스스로 자유롭게 설정되면 좋다고 생각합니다.)

완성품이 이쪽



마지막으로



수고하셨습니다.

좋은 웹페이지 즐겨찾기