ããã«ã¡ã¯ïŒSwift 5ã®ãªãªãŒã¹ãã1幎以äžãçµéããéçºè ã«å€ãã®æ°ãããã®ãããããããŸããããã®èšäºã§ã¯ãIOSã®ã¢ãã€ã«éçºããã®ä»çµã¿ãããã«å¿ èŠãªãã®ãªã©ã«ã€ããŠèª¬æããŸãããã®èšäºã¯ãSwift5ã§ããã°ã©ãã³ã°ãå§ããã°ããã®äººã察象ãšããŠããŸãã
ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãšããŒããŠã§ã¢ã®èŠä»¶
ãããã«ãããä»»æã®ããŒãžã§ã³ã®IOSçšã®ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããã«ã¯ãMac OSãå®è¡ããŠããã³ã³ãã¥ãŒã¿ãŒãå¿ èŠã§ãïŒã§ããã°ææ°ããŒãžã§ã³ãå®è¡ããŸããããããªããšãéçºè ããŒã«ãšXcodeã®äžéšãå®å šã«äºæž¬ã§ããªãåäœãéå§ããå¯èœæ§ããããŸãïŒã Mac OSãå®è¡ããã·ã¹ãã ã®å¿ èŠæ§ã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ããã«æ©èœãå¶éãããããšã«æ £ããŠããªãä»ã®éçºè ããã®è«äºãšææªã®åå ã§ããã»ãšãã©ã®å Žåãããã€ãã®æ¹æ³ããããŸããHackintoshãè³Œå ¥ãŸãã¯çµã¿ç«ãŠãŸãïŒãã ããèªå·±çµã¿ç«ãŠã®å Žåããã©ã€ããŒã®åé¡ãçºçããªãéãããã®ãããªã³ã³ãã¥ãŒã¿ãŒãçµã¿ç«ãŠãã®ã¯ç°¡åã§ã¯ãªãããšãèŠåããŸãïŒãç§ã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã€ã¡ãŒãžãä»®æ³ãã·ã³ã«ã€ã³ã¹ããŒã«ããããšãšãMac OSãéåžžã®ã©ãããããã«ããŒã«ããããšã®äž¡æ¹ãããã©ã€ããŒã®åé¡ãªãã«èŠãŸããããã ãããã®ãã¹ã«ã¯ããŒããŠã§ã¢ã¹ãã«ãå¿ èŠã§ãããMac OSã®å°æ¥ã®ããŒãžã§ã³ã«å¯Ÿãã100ïŒ ã®ãµããŒããäžè¶³ããæãããããŸãã
ãã¡ãããå¥ã®æ¹æ³ã¯ãå ã Appleããã³ã³ãã¥ãŒã¿ãŒãè³Œå ¥ããããšã§ããã©ããããããå¿ èŠãªå Žåã¯ãããããäœããã¹ãããç¥ã£ãŠããã§ãããïŒãã ããXcodeã¯ããã«çŽ25ã®ã¬ãã€ãããããããã€ã¹ã«è¿œå ã®ã·ãã¥ã¬ãŒã¿ãŒãããŠã³ããŒããããšã44ã®ã¬ãã€ããã¹ãŠãç°¡åã«å æããå¯èœæ§ãããããšãããã«èŠåããããšæããŸãã 128ã®ã¬ãã€ãã®ãµã€ãºã¯ãnode_modulesãPycharmããã³Unityãã£ãã·ã¥ãèªäœãããã³éçºè åãã®ãã®ä»ã®èŠçŽ ãå«ãŸãªãIOSéçºå°çšã§ããå¿ èŠããããŸãããããã¯ã倧éã®ãã£ã¹ã¯ã¹ããŒã¹ãå æããŸããä»ã®ããšãè¡ãå Žåã¯ãå°ãªããšããã£ã¹ã¯ãå¿ èŠã§ãã 256ã®ã¬ãã€ã以äžããïŒã
éçºç°å¢ãªãã·ã§ã³
Swiftã䜿çšããCocoaããã³CocoaTouchã©ã€ãã©ãªã䜿çšããŠXcodeã§ã¢ããªã±ãŒã·ã§ã³ãéçºããå€ããå°ãªããå€å žçãªæ¹æ³ã«å ããŠãXcodeãã»ãšãã©äœ¿çšããã«éçºããä»ã®å€ãã®æ¹æ³ããããŸãïŒXcodeããªããšã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããªããªããŸãïŒãããã€ãã®æè¡ããããŸãïŒ
- Xamarinããã®ãã©ãããã©ãŒã äžã®ã¢ããªã±ãŒã·ã§ã³ã¯ãCïŒã䜿çšããŠèšè¿°ãããŠããŸããXamarinã䜿çšãããšããã€ãã£ãã®AndroidãŸãã¯IOSã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸããéçºã¯VisualStudioã䜿çšããŠè¡ãããšãã§ããŸãããã®ãããªå©ç¹ã«ããããããããããããäžéšã®ã¢ããªã±ãŒã·ã§ã³ãã©ã°ã¡ã³ãã¯ããã©ãããã©ãŒã ããšã«åå¥ã«äœæããå¿ èŠããããŸã
- React Native. React , -. . , - , - . , .
- Flutter. , Flutter Dart Google. , , . , Flutter â React Native, . Dart, -
- PhoneGap/Cordova. Nitobi, Adobe. , PhoneGap, Apache Cordova, WebView,
- Unity. IOS, . , . gamedev.
ã¢ããªã±ãŒã·ã§ã³ã®éçºã«ã¯ãSwiftããã°ã©ãã³ã°èšèªã䜿çšããããšããå§ãããŸãã Swiftã¯æ¯èŒçæ°ããããã°ã©ãã³ã°èšèªã§ããã2014幎ãŸã§æ£åŒã«ãªãªãŒã¹ãããŸããã§ããã Mac OSãIOSã®éçºã«äœ¿çšã§ããLinuxããµããŒããããŠããŸãïŒããšãã°ãããŸãç¹å®ãããŠããªãLinuxãããå Žåã¯ããã®ãªã³ã¯ããèšèªãå®å šã«ããŠã³ããŒãããŠè©Šãããšãã§ããŸãïŒã
Swiftèªäœã¯ãGolangãªã©ã®å žåçãªæ°äžä»£èšèªã§ãã
åœåããã®èšèªã¯ãããã°ã©ããŒã«ãšã£ãŠObjective Cãããèªã¿ãããããšã©ãŒã«åŒ·ãèšèªãšããŠèããããŠããŸãããåæã«ãSwiftã¯CãšObjectiveCã®äž¡æ¹ã§åããããžã§ã¯ãã§äœæ¥ã§ããŸãã
ãã®èšèªã®èª¬æã詊ã¿ã代ããã«ïŒäžèŠC ++ã§ããããã¡ãã·ã§ããã«ãªèªåå ¥åæ©èœã§çŸä»£ã®çŸå®ã«å€æŽãããŠããŸãïŒãèšèªãã©ã®ããã«æ©èœãããã詳现ã«èª¬æããŠããAppleã®éåžžã«åªããããã¥ã¡ã³ããç ç©¶ããããšããå§ãããŸããããŠãã®æ§æã¯äœã§ãããè±èªçã¯ããã«ããããã·ã¢èªã®ç¿»èš³ã¯ããã«ãããŸããSwiftèšèªã®åºæ¬ã«æ £ãããã仿¥ã®ããã«é²ãããšãã§ããŸããXcodeã䜿çšããŠç°¡åãªèšç®æ©ãäœæããŸãã
èšç®æ©ã®äœæ
ã¢ããªã±ãŒã·ã§ã³ãäœæããã«ã¯ãAppStoreããç¡æã§ããŠã³ããŒãã§ããXcodeãå¿ èŠã§ããæåã®5ã€ã®ã¬ãã¥ãŒã1ã€æãä»ããŠãããšããäºå®ã«ããããããããã®è©äŸ¡ã«æãããªããªãã§ãã ãããããã¯ãããªããã·ã§ãã¯ãåãããšããæå³ã§ã¯ãããŸããããããããæ§æãšãã³ãã¯ç·šéæã«ããŸãéãå«ãŸããŠããŸããããäžè¬çã«ãXcodeã¯åãAndroid Studioãããäœåã奜æçãªå°è±¡ãæ®ããŸããïŒããããç§ã¯ãããæºåããæ¹æ³ãããããªãã ãã§ããïŒã Xcode以å€ã§éçºã詊ããããšæã£ãŠããŠãJetBrains補åã奜ãå Žåã¯ãAppCodeã詊ãããšãã§ããŸããAppCodeã¯ãXcodeãšã®çžäºéçšæ§ãSwiftããã³Objective Cãšã®é£æºãããã³ãã®ä»ã®å€ãã®åªããæ©èœããµããŒãããŸããç§ã¯å人çã«ã¯è©ŠããŠããŸããããJetBrainsã®ãã¹ãŠã®ãœãããŠã§ã¢ã®ãµãã¹ã¯ãªãã·ã§ã³ããæã¡ã®å Žåã¯ãããŠã³ããŒãããŠå®è¡ããŠã¿ãŸãããã
ããã§ãXcodeãã€ã³ã¹ããŒã«ãããŸãããããã§ãéçºãéå§ã§ããŸããæ°ãããããžã§ã¯ããéå§ãã[ã·ã³ã°ã«ããŒãžã¢ããªã±ãŒã·ã§ã³]ãéžæããŸãã
ãã®åŸãã¢ããªã±ãŒã·ã§ã³ã«é¢ããããŒã¿ãå ¥åããããã«æ±ããããŸãã XcodeãåããŠèµ·åããå Žåã¯ãããã«AppleIDãå ¥åããå¿ èŠããããŸãããã®åŸããããžã§ã¯ãã®ååïŒãã®å Žåã¯Calculatorã®ã¿ïŒãšäŒç€Ÿããã³ã¢ããªã±ãŒã·ã§ã³ã®ååã«é¢ããæ å ±ãå ¥åããå¿ èŠããããŸããå°æ¥ãã®ã¢ããªã±ãŒã·ã§ã³ãå ¬éããäºå®ããªãå Žåã¯ãããã«å¥œããªããã«æžãããšãã§ããŸããèšèªãšããŠSwiftãéžæãããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãšããŠStoryboardãéžæããŸãããããã§ãã¹ããããã®ãæ¬åœã«ãªãã®ã§ã
ã¢ããªã±ãŒã·ã§ã³ãäœæããããæ¬¡ã®ãã¡ã€ã«ã«ç§»åã§ããŸãã
Calculator.xcodeprojå¿
èŠã«å¿ããŠèšå®ã埮調æŽããŸããä»ã®ãšãããç§ã¯ãã¹ãŠããã®ãŸãŸã«ããŠãiPhoneãšIpadçšã®IOS13.6ã®ææ°ããŒãžã§ã³çšã«éçºããŸãããååãšããŠãä»ã®ãšããiPadãé€å€ããããšãã§ããŸã-ç§ãã¡ã®ã€ã³ã¿ãŒãã§ãŒã¹ã¯ããããããŸãè¯ãèŠããªãã§ãããããã ããçªç¶å
¬éããå Žåã¯ãAppleã®åŸæ¥å¡ãæ€èšŒã®ããã«Iphoneã®ã¢ããªã±ãŒã·ã§ã³ããã¹ãããŠãããããå°ãªããšãIpadã§æ©èœããããšãèŠåããããšæããŸãããã ãããã®åã«ãéçºè
ããŒã«99ãã«ãè²»ããå¿
èŠããããŸãïŒã
ã¢ããªã±ãŒã·ã§ã³ãäœæããããããã«ãšãã¥ã¬ãŒã¿ãŒãåŒã³åºããŠãäœãèµ·ãã£ããã远跡ã§ããŸãããããè¡ãã«ã¯ãCMD + RããŒã®çµã¿åãããæŒãã ãã§ããå·Šäžã§ããšãã¥ã¬ãŒã¿ãŒãå®è¡ããããã€ã¹ãéžæã§ããŸãããŸããã±ãŒãã«ãä»ããŠå®éã®ç©çããã€ã¹ãæ¥ç¶ããããã«ãã¹ãããããšãã§ããŸãïŒã
ã€ã³ã¿ãŒãã§ã€ã¹ãšãŠã£ãžã§ãããäœæããæ¹æ³ã¯ãããããããŸãããã¥ãŒãã©ã«ãªãã·ã§ã³ã䜿çšããŸããã¡ã€ã³ãã«ããŒãäœæããç»é¢å šäœã«é 眮ããŠãããããã°ã©ã ã§ãŠã£ãžã§ããã®é 眮ãéå§ããŸãããããã£ãŠã
Main.storyboardèŠçŽ ããã䟿å©ã«é
眮ããããã«ãæåã«ãã¡ã€ã«ã«ç§»åããŠã¡ã€ã³ãã¥ãŒãé»ã«ããŸãã
ãã®åŸãäž»ã«äœæ¥ãããã¥ãŒã远å ããŸãããããè¡ãã«ã¯ãå³äžã®ãã©ã¹èšå·ãã¯ãªãã¯ããŠãŠã£ãžã§ããã远å ããæ°ãããŠã£ãžã§ããã远å ããŠãæ€çŽ¢ã«uiviewãšå ¥åããŸãã
ãã®åŸããã®ãŠã£ãžã§ãããã¡ã€ã³ç»é¢ã«ãã©ãã°ãããã«ã¹ã¯ãªãŒã³ã«å±éããå¿ èŠããããŸãããã®ããã«ãã䜿çšããå¿ èŠããã
constaintãŸãããããè¡ãã«ã¯ãå·Šäžã«ããããŒã¹ãã€ããŒã®ããŒãã«å°ã䌌ãã¢ã€ã³ã³ãã¯ãªãã¯ããäž¡åŽã«0ãå²ãåœãŠ
ãŸãããã®åŸãæ°ãããŠã£ãžã§ãããç»é¢å šäœã«åãŸãããã«å±éãããŸããæ¬¡ã«ãååãšåãããã«ããŠã£ãžã§ããã®è²ã倿Žããå¿ èŠããããŸãããéªéã«ãªããããŠã£ãžã§ãããé 眮ã§ããããã«ãä»ã¯ã¯ãªã¢ã«ã©ãŒã«å€æŽããå¿ èŠããããŸãã
ããã§ããã¡ã€ã«ã«ç§»åã§ããŸã
ViewController.swiftãæ®ãã®ããã°ã©ãã³ã°ã¯ãã¹ãŠããã«ãããŸãããŸãã@IBOutletã¹ããŒãªãŒããŒããã³ãŒãã«ãªã³ã¯ã§ããããã«ããããã«ãç¹å¥ãªããŒã«ãŒã䜿çšããå¿
èŠããããŸãããããè¡ãã«ã¯ã次ã®è¡ãèšè¿°ããå¿
èŠããããŸãã
@IBOutlet var holder: UIView!
ããã§ãã³ãŒãããŠã£ãžã§ããã«ãªã³ã¯ã§ããŸãããããè¡ãã«ã¯ãå®éã«ã¯ããã«ããŒããã«ããŒã«æ¥ç¶ããå¿ èŠããããŸãããããè¡ãã«ã¯ã
viewControllerãã«ããŒãå³ã¯ãªãã¯ããŠç»é¢ã«ãã©ãã°ããŸãã
æåŸã«ãã³ãŒããšã¹ããŒãªãŒããŒãã®ãªã³ã¯ãå®äºããããã°ã©ãã³ã°ãéå§ã§ããŸãã
次ã«ã2ã€ã®å€æ°ã远å ããŸããæåã®å€æ°ã¯ãæåã®å€ãæžã蟌ãããšãã§ããåãªãæ°å€ã§ããã2çªç®ã®å€æ°ã¯çµæã®å€ã«ãªããŸãããªãã·ã§ã³ã®å®£èšã䜿çšããããã3çªç®ã®å€æ°ã¯ããå°ãå ·äœçã«ãªããŸãïŒåç©ã®çš®é¡ãèªãããšãã§ããŸãã詳现ã¯ããã§èªãããšãã§ããŸãïŒïŒããªãã·ã§ã³ã«ã¯ãä»»æã®å€ãŸãã¯nilãå«ããããšãã§ããŸãããªãã·ã§ã³ã§ãnilå€ãæç€ºçã«åŠçãããããã«ããŸããããã«ãæåãããèšç®æ©ããµããŒãããæ°åŠæŒç®ã®ãªã¹ãã远å ããŸãã
var firstNumber = 0
var resultNumber = 0
var currentOperations: Operation?
enum Operation {
case add, subtract, multiply, divide
}
次ã«ãã©ãã«ãäœæããå¿ èŠããããŸãããã®ã©ãã«ã«ã¯ãæ°å€ãšèšç®çµæã衚瀺ãããŸããããã©ã«ãã§ã¯ã0ãšããªã倧ããªãã©ã³ãããããŸããä»ã®ãã¹ãŠã¯ãç§ãæãã«ãå®å šã«æç¢ºã§ãïŒ
private var resultLabel: UILabel = {
let label = UILabel()
label.text = "0"
label.textColor = .white
label.textAlignment = .right
label.font = UIFont(name: "Helvetica", size: 100)
return label
}()
ãã®åŸãã¬ã³ããªã³ã°ãåŒã³åºãçµã¿èŸŒã¿ã¡ãœããïŒç§ã話ããŠãã
viewDidLoadïŒãã¹ãããããŠããã³ãã©ãŒé¢æ°ããã³ã°ãããã¹ãŠã®ãã¿ã³ãæç»ãã颿°ãåŒã³åºãã¡ãœãããåŒã³åºãå¿
èŠããããŸãã
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
setupNumberPad() //,
}
ãã®åŸã颿°ããããŸã
setupNumberPadããŸãããã©ã³ãã®ãµã€ãºã«å®æ°ãèšå®ããŸããããã«ãããã¬ã€ã¢ãŠããªãã§äœæ¥ãããããåŸã§ã¢ããªã±ãŒã·ã§ã³ã®ãã©ã³ããµã€ãºãããã«å¢æžã§ããŸãããã®åŸããã¿ã³ãµã€ãºãäœæããŸãããã®å¹
ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ç»é¢ãµã€ãºã®1/4ã«çãããªããŸãã
private func setupNumberPad() {
let FontSize:CGFloat = 25
//
let buttonSize: CGFloat = view.frame.size.width / 4
// 1/4
let zeroButton = UIButton(frame: CGRect(x: 0, y: holder.frame.size.height-buttonSize, width: buttonSize*3, height: buttonSize))
// UIButton
zeroButton.setTitleColor(.black, for: .normal)
//
zeroButton.backgroundColor = .white
//
zeroButton.setTitle("0", for: .normal)
// 0
zeroButton.titleLabel?.font = UIFont(name: "Helvetica", size: FontSize)
// , family
zeroButton.tag = 1
//
holder.addSubview(zeroButton) // holder
zeroButton.addTarget(self, action: #selector(zeroTapped), for: .touchUpInside)
//
0ã¯ç»é¢ã®3åã®1ãå ãããããæ°åŠãªãã©ã³ãã®å³åŽã®åã«ç§»åã§ããŸããæ¬¡ã«ããã¹ãŠã®ãã¿ã³ãäœããã®æ¹æ³ã§ã¬ã³ããªã³ã°ããå¿ èŠããããŸãããã¡ããã1ã€ãã€æãããšãã§ããŸããããããããšé·ããŠéå±ãªãã®ã«ãªã£ãŠããŸããŸãããªããªã 1ãã9ãŸã§ã®äžé£ã®æ°åãããã ããªã®ã§ããµã€ã¯ã«ã䜿çšãããã©ããã®æ±ºå®ã¯è¡šé¢äžããªãã®ãã®ã§ããæåã®ãµã€ã¯ã«ãã³ã¡ã³ãã§ãäŒãããŸããä»ã®2ã€ã¯æ¬è³ªçã«ç¹°ãè¿ãã§ããç§ã¯ããããã«ããã®ããäžã«äžããŸãïŒ
for x in 0..<3 {
let button_row_1 = UIButton(frame: CGRect(x: buttonSize * CGFloat(x), y: holder.frame.size.height-(buttonSize*2), width: buttonSize, height: buttonSize))
// x x
button_row_1.setTitleColor(.black, for: .normal) //
button_row_1.backgroundColor = .white //
button_row_1.setTitle("\(x+1)", for: .normal) //
holder.addSubview(button_row_1) //
button_row_1.tag = x+2 // .. 1 , 2
button_row_1.addTarget(self, action: #selector(numberPressed(_:)), for: .touchUpInside)
//
}
ç§ãã¡ã®çªå·ã®æ®ãã®ã³ãŒã
for x in 0..<3 {
let button_row_2 = UIButton(frame: CGRect(x: buttonSize * CGFloat(x), y: holder.frame.size.height-(buttonSize*3), width: buttonSize, height: buttonSize))
button_row_2.setTitleColor(.black, for: .normal)
button_row_2.backgroundColor = .white
button_row_2.setTitle("\(x+4)", for: .normal)
button_row_2.addSubview(button_row_2)
button_row_2.tag = x+5
button_row_2.addTarget(self, action: #selector(numberPressed(_:)), for: .touchUpInside)
}
for x in 0..<3 {
let button_row_3 = UIButton(frame: CGRect(x: buttonSize * CGFloat(x), y: holder.frame.size.height-(buttonSize*4), width: buttonSize, height: buttonSize))
button_row_3.setTitleColor(.black, for: .normal)
button_row_3.backgroundColor = .white
button_row_3.setTitle("\(x+7)", for: .normal)
holder.addSubview(button_row_3)
button_row_3.tag = x+8
button_row_3.addTarget(self, action: #selector(numberPressed(_:)), for: .touchUpInside)
}
ãã®åŸãå ¥åããããŒã¿ããªã»ããããCEãã¿ã³ãé 眮ããå¿ èŠããããŸãããããäžçªäžã«é 眮ãããã®æ©èœçè² è·ã«ã€ããŠã¯å°ãåŸã§èª¬æããŸããä»ã®ãšããããããé 眮ããŠãã³ãã©ãŒãæ¥ç¶ããã ãã§ãã
let clearButton = UIButton(frame: CGRect(x: 0, y: holder.frame.size.height-(buttonSize*5), width: view.frame.size.width - buttonSize, height: buttonSize))
clearButton.setTitleColor(.black, for: .normal)
clearButton.backgroundColor = .init(red: 0, green: 2, blue: 0.8, alpha: 1) // rgb
clearButton.titleLabel?.font = UIFont(name: "Helvetica", size: FontSize-4) //
clearButton.setTitle("CE", for: .normal)
holder.addSubview(clearButton) // holder
clearButton.addTarget(self, action: #selector(clearResult), for: .touchUpInside) //
ãã®éå±ãªç¹°ãè¿ãéšåã¯çµäºããŸãããããã§ãå¥ã®æºåãæŽããŸãããæ°åŠæŒç®ãå®è¡ã§ãããªãã©ã³ãã§ãããŸããå¿ èŠãªãªãã©ã³ããé åå ã«é 眮ããããããããããååŸããŸãããªãã©ã³ããã¿ã³èªäœãåã«é 眮ãããªãã©ã³ãã®æŒäžã«åå¿ãããã³ãã©ãŒé¢æ°ã远å ããŸãã
let operations = ["=","+", "-", "x", "÷"] //
for x in 0..<5 {
let button_operand = UIButton(frame: CGRect(x: buttonSize * 3, y: holder.frame.size.height-(buttonSize * CGFloat(x+1)), width: buttonSize, height: buttonSize))
button_operand.setTitleColor(.black, for: .normal)
button_operand.backgroundColor = .init(red: 2, green: 0.8, blue: 0, alpha: 1) //
button_operand.setTitle(operations[x], for: .normal)
holder.addSubview(button_operand)
button_operand.tag = x+1
// ,
button_operand.titleLabel?.font = UIFont(name: "Helvetica", size: FontSize)
button_operand.addTarget(self, action: #selector(operationPressed(_:)), for: .touchUpInside)
}
ãããã®ã°ããŒãã«æäœã®åŸãçµæãæžã蟌ãã©ãã«ãé 眮ãã颿°ãéããå¿ èŠããããŸãã
resultLabel.frame = CGRect(x: 20, y: clearButton.frame.origin.y - 110.0, width: view.frame.size.width - 40, height: 100)
holder.addSubview(resultLabel)
} //
ããã§ããã³ãã©ãŒã«é²ãããšãã§ããŸãã
ãã³ãã©ãŒã®æäœ
ããã¯ãã¹ãŠåºæ¬çã«åãªãã¬ã€ã¢ãŠãã§ããããä»åºŠã¯ã¢ããªã±ãŒã·ã§ã³ã«ããžãã¯ãçµã¿èŸŒãå¿ èŠããããŸãããããè¡ãã«ã¯ãObjectiveCã©ã³ã¿ã€ã ã®ã¡ãœããã䜿çšããŠã³ãŒããç°¡ç¥åããŸããäœãèµ·ãã£ãŠããã®ãããããªãå Žåã¯ããã®èšäºãèªãããšããå§ãããŸãã
ã ãããããã«ç§ãã¡ã®æ©èœããããŸãïŒ
@objc func clearResult() {
resultLabel.text = "0" // 0
currentOperations = nil //
firstNumber = 0 // 0
}
@objc func zeroTapped() {
//
if resultLabel.text != "0" {
if let text = resultLabel.text {
resultLabel.text = "\(text)\(0)" //
}
}
}
次ã«ããã¿ã³ã«ãã³ãã©ãŒé¢æ°ã远å ããå¿ èŠããããŸãã
@objc func numberPressed(_ sender: UIButton) {
let tag = sender.tag - 1
if resultLabel.text == "0" {
resultLabel.text = "\(tag)"
}
else if let text = resultLabel.text {
//
resultLabel.text = "\(text)\(tag)"
}
}
次ã¯ãã¢ããªã±ãŒã·ã§ã³ã®æãéèŠãªããžãã¹ããžãã¯ã§ããswitchæ§æã䜿çšããŠãæ°åŠæŒç®ãå¶åŸ¡ããŸãã
@objc func operationPressed(_ sender: UIButton) {
let tag = sender.tag
if let text = resultLabel.text, let value = Int(text), firstNumber == 0 {
//
firstNumber = value
resultLabel.text = "0"
}
if tag == 1 {
if let operation = currentOperations {
var secondNumber = 0
if let text = resultLabel.text, let value = Int(text) {
secondNumber = value
}
switch operation {
case .add:
firstNumber = firstNumber + secondNumber
secondNumber = 0 //
resultLabel.text = "\(firstNumber)"
currentOperations = nil
firstNumber = 0 // Label
break
case .subtract:
firstNumber = firstNumber - secondNumber
secondNumber = 0
resultLabel.text = "\(firstNumber)"
currentOperations = nil
firstNumber = 0
break
case .multiply:
firstNumber = firstNumber * secondNumber
secondNumber = 0
resultLabel.text = "\(firstNumber)"
currentOperations = nil
firstNumber = 0
break
case .divide:
firstNumber = firstNumber / secondNumber
secondNumber = 0
resultLabel.text = "\(firstNumber)"
currentOperations = nil
firstNumber = 0
break
}
}
}
else if tag == 2 {
currentOperations = .add
// . ,
}
else if tag == 3 {
currentOperations = .subtract
}
else if tag == 4 {
currentOperations = .multiply
}
else if tag == 5 {
currentOperations = .divide
}
}
}
ããã§å šéšã§ãïŒãã®ã¢ããªã±ãŒã·ã§ã³ã®ãœãŒã¹ã³ãŒãã¯ããã®ãªã³ã¯ã«ãããŸãããã®çµæãå€èŠ³ã¯æ¬¡ã®ããã«ãªããŸããã
äŒçµ±çã«ãåå¿è ã®IOSéçºè ã«åœ¹ç«ã€å¯èœæ§ã®ããããã€ãã®æçšãªãªãœãŒã¹ãæäŸããŸãã
- Swiftã®äžè¬çãªè³ªåã«å¯Ÿããåçãè±å¯ãªåå¿è åããµã€ãã§ãã
- Swift Tourãããã°ã©ãã³ã°ããã§ã«ç¥ã£ãŠããŠãèšèªã«æ
£ãããã ããªããã¯ãŒã«ãªå Žæã§ã
- æ¯èŒçæ°ãããŠãã¬ã³ãã£ãªSwiftUIã«ã€ããŠå°ã
iOSéçºã®ã¯ã€ãã¯ã¹ã¿ãŒããç¡æã®ãŠã§ãããŒ