2014-09-14 1 views
0

레이블 텍스트로 한 자리 숫자의 레이블이있는 Swift에서 응용 프로그램을 만들려고합니다. 나는 라벨을 탭하고 정수를 증가시키고 싶다. 나는 Tic Tac Toe 앱에 대한 튜토리얼을 통해 각 라벨을 클리어 버튼 (1-36)으로 오버레이하고 탭을 사용하여 라벨을 증가시킬 수 있다고 배웠다. (1 -36) 텍스트 번호. 여태까지는 그런대로 잘됐다. 이 자습서에서는 switch 문을 사용하여 단추의 태그를 두드려서 사례를 Label 참조에 하드 코딩합니다. Tic Tac Toe는 3x3 그리드이기 때문에 괜찮습니다. 그리드는 6x6이고 36 개 모든 경우를 하드 코드하기에는 너무 게을러서입니다. 버튼 태그를 전달하고이 작업을 수행하는 더 똑똑한 방법이 있습니까?Swift에서 여러 UIButtons의 탭 처리 방법

나는 단추 레이블 텍스트 정수를 배열에 저장하고 거기에서 레이블을 업데이트하고/쓰기/쓰기를 생각하고 있습니다. 이것은 아마도 지금 가지고있는 것보다 낫지 만 스위치 문 문제를 해결할 것이라고는 생각하지 않습니다.

모든 조언을 주시면 감사하겠습니다.

import UIKit 

class ViewController: UIViewController { 

@IBOutlet var Label1: UILabel! //Row one 
@IBOutlet var Label2: UILabel! 
@IBOutlet var Label3: UILabel! 
@IBOutlet var Label4: UILabel! 
@IBOutlet var Label5: UILabel! 
@IBOutlet var Label6: UILabel! 

@IBOutlet var Label7: UILabel! //Row two 
@IBOutlet var Label8: UILabel! 
@IBOutlet var Label9: UILabel! 
@IBOutlet var Label10: UILabel! 
@IBOutlet var Label11: UILabel! 
@IBOutlet var Label12: UILabel! 

@IBOutlet var Label13: UILabel! //Row three 
@IBOutlet var Label14: UILabel! 
@IBOutlet var Label15: UILabel! 
@IBOutlet var Label16: UILabel! 
@IBOutlet var Label17: UILabel! 
@IBOutlet var Label18: UILabel! 

@IBOutlet var Label19: UILabel! //Row four 
@IBOutlet var Label20: UILabel! 
@IBOutlet var Label21: UILabel! 
@IBOutlet var Label22: UILabel! 
@IBOutlet var Label23: UILabel! 
@IBOutlet var Label24: UILabel! 

@IBOutlet var Label25: UILabel! //Row five 
@IBOutlet var Label26: UILabel! 
@IBOutlet var Label27: UILabel! 
@IBOutlet var Label28: UILabel! 
@IBOutlet var Label29: UILabel! 
@IBOutlet var Label30: UILabel! 

@IBOutlet var Label31: UILabel! //Row six 
@IBOutlet var Label32: UILabel! 
@IBOutlet var Label33: UILabel! 
@IBOutlet var Label34: UILabel! 
@IBOutlet var Label35: UILabel! 
@IBOutlet var Label36: UILabel! 


@IBOutlet var Button1: UIButton! //Row one 
@IBOutlet var Button2: UIButton! 
@IBOutlet var Button3: UIButton! 
@IBOutlet var Button4: UIButton! 
@IBOutlet var Button5: UIButton! 
@IBOutlet var Button6: UIButton! 

@IBOutlet var Button7: UIButton! //Row two 
@IBOutlet var Button8: UIButton! 
@IBOutlet var Button9: UIButton! 
@IBOutlet var Button10: UIButton! 
@IBOutlet var Button11: UIButton! 
@IBOutlet var Button12: UIButton! 

@IBOutlet var Button13: UIButton! //Row three 
@IBOutlet var Button14: UIButton! 
@IBOutlet var Button15: UIButton! 
@IBOutlet var Button16: UIButton! 
@IBOutlet var Button17: UIButton! 
@IBOutlet var Button18: UIButton! 

@IBOutlet var Button19: UIButton! //Row four 
@IBOutlet var Button20: UIButton! 
@IBOutlet var Button21: UIButton! 
@IBOutlet var Button22: UIButton! 
@IBOutlet var Button23: UIButton! 
@IBOutlet var Button24: UIButton! 

@IBOutlet var Button25: UIButton! //Row five 
@IBOutlet var Button26: UIButton! 
@IBOutlet var Button27: UIButton! 
@IBOutlet var Button28: UIButton! 
@IBOutlet var Button29: UIButton! 
@IBOutlet var Button30: UIButton! 

@IBOutlet var Button31: UIButton! //Row six 
@IBOutlet var Button32: UIButton! 
@IBOutlet var Button33: UIButton! 
@IBOutlet var Button34: UIButton! 
@IBOutlet var Button35: UIButton! 
@IBOutlet var Button36: UIButton! 

@IBAction func UIButtonClicked(sender:UIButton) { 
    setLabelTextForButton(sender.tag) 
} 

func setLabelTextForButton(labelTag:Int) { 
    switch labelTag{ 
    case 1: 
     var currentLabel:Int = Label1.text.toInt()! 
     if currentLabel == 9  // IF statement to reset to 0 if label is currently 9 
     { currentLabel = 0 
      Label1.text = String(currentLabel) } 
     else { 
     currentLabel = currentLabel + 1 
      Label1.text = String(currentLabel)} 
    case 2: 
     var currentLabel:Int = Label2.text.toInt()! // OMG I have to code for all these buttons 
     currentLabel = currentLabel + 1 
     Label2.text = String(currentLabel) 
    case 3: 
     var currentLabel:Int = Label3.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label3.text = String(currentLabel) 
    case 4: 
     var currentLabel:Int = Label4.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label4.text = String(currentLabel) 
    case 5: 
     var currentLabel:Int = Label5.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label5.text = String(currentLabel) 
    case 6: 
     var currentLabel:Int = Label6.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label6.text = String(currentLabel) 
    case 7: 
     var currentLabel:Int = Label7.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label7.text = String(currentLabel) 
    case 8: 
     var currentLabel:Int = Label8.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label8.text = String(currentLabel) 
    case 9: 
     var currentLabel:Int = Label9.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label9.text = String(currentLabel) 
    case 10: 
     var currentLabel:Int = Label10.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label10.text = String(currentLabel) 
    case 11: 
     var currentLabel:Int = Label11.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label11.text = String(currentLabel) 
    case 12: 
     var currentLabel:Int = Label12.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label12.text = String(currentLabel) 
    case 13: 
     var currentLabel:Int = Label13.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label13.text = String(currentLabel) 
    case 14: 
     var currentLabel:Int = Label14.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label14.text = String(currentLabel) 
    case 15: 
     var currentLabel:Int = Label15.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label15.text = String(currentLabel) 
    case 16: 
     var currentLabel:Int = Label16.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label16.text = String(currentLabel) 
    case 17: 
     var currentLabel:Int = Label17.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label17.text = String(currentLabel) 
    case 18: 
     var currentLabel:Int = Label18.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label18.text = String(currentLabel) 
    case 19: 
     var currentLabel:Int = Label19.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label19.text = String(currentLabel) 
    case 20: 
     var currentLabel:Int = Label20.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label20.text = String(currentLabel) 
    case 21: 
     var currentLabel:Int = Label21.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label21.text = String(currentLabel) 
    case 22: 
     var currentLabel:Int = Label22.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label22.text = String(currentLabel) 
    case 23: 
     var currentLabel:Int = Label23.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label23.text = String(currentLabel) 
    case 24: 
     var currentLabel:Int = Label24.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label24.text = String(currentLabel) 
    case 25: 
     var currentLabel:Int = Label25.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label25.text = String(currentLabel) 
    case 26: 
     var currentLabel:Int = Label26.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label26.text = String(currentLabel) 
    case 27: 
     var currentLabel:Int = Label27.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label27.text = String(currentLabel) 
    case 28: 
     var currentLabel:Int = Label28.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label28.text = String(currentLabel) 
    case 29: 
     var currentLabel:Int = Label29.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label29.text = String(currentLabel) 
    case 30: 
     var currentLabel:Int = Label30.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label30.text = String(currentLabel) 
    case 31: 
     var currentLabel:Int = Label31.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label31.text = String(currentLabel) 
    case 32: 
     var currentLabel:Int = Label32.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label32.text = String(currentLabel) 
    case 33: 
     var currentLabel:Int = Label33.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label33.text = String(currentLabel) 
    case 34: 
     var currentLabel:Int = Label34.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label34.text = String(currentLabel) 
    case 35: 
     var currentLabel:Int = Label35.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label35.text = String(currentLabel) 
    case 36: 
     var currentLabel:Int = Label36.text.toInt()! 
     currentLabel = currentLabel + 1 
     Label36.text = String(currentLabel) 

    default: something something 

답변

1

추가 레이블 대신 단추의 label 속성을 사용하십시오. 이 모양은 다음과 같습니다.

@IBOutlet var Button1: UIButton! //Row one 
@IBOutlet var Button2: UIButton! 
@IBOutlet var Button3: UIButton! 
@IBOutlet var Button4: UIButton! 
@IBOutlet var Button5: UIButton! 
@IBOutlet var Button6: UIButton! 
.... 

@IBAction func increaseLabel(sender: UIButton) { 
    var currentLabel = sender.titleLabel.text.toInt()! 
    currentLabel = currentLabel + 1 
    sender.setTitle("\(currentLabel)", forState: .Normal) 
} 

그런 다음 모든 단추를 Interface Builder에서 해당 작업에 연결하십시오.

+0

시도했을 때 답을 확인해야합니다. :) – dasdom

+0

매력처럼 작동합니다. 감사! – OsakaStarbux

관련 문제