2016-10-06 5 views
2

"3x3"というラベルのボタンがあります。ボタンのクリック機能で値 "3"のInt変数を作成します。ボタンのタイトルから整数を取得する方法

私は私が得る文字列は、私が取得この

"Optional(\"3\")" 

とのIntのようなものですが、私は唯一の3

+0

Int(newBoardSizeString)! –

+0

なぜボタンラベルからIntを作成したいのですか? –

+0

私は引数としてIntを持つ別の関数を呼び出したいから – rv7284

答えて

4

これはXY problemです。

質問:「私のボタンラベルの最初の文字をIntに変換するにはどうすればよいですか?

本当の答えは「しないでください」です。あなたのコードのロジックを表示情報に依存させることは非常に悪い考えです。

let newBoardSize = sender.tag 

注どちらかがであなたのIBActionを設定する必要があります。

一つの簡単な解決策は、あなたのボタンのタグプロパティを使用して、ボタンを作成するときにIBの3にタグ値を設定することですあなたのIBActionの正しいクラスに送信者をキャストしてください。

別のアプローチは、各ボタンに適切な値を把握するために、あなたの別のボタン(例えばthreeButtonfourButton)にコンセントを設置して、あなたのIBActionでは、送信者があるボタンをチェックし、switchステートメントを使用することです。

func buttonTapped(sender: UIButton) { 
    switch sender { 
    case threeButton: 
     //Use the value 3 
    case fourButton 
     //Use the value 4 
    } 
} 
+0

最後に、誰かが回答をする必要があります! –

0

があなたをしたたい

nil 

ある

let newBoardSizeString = String.localizedStringWithFormat("\(sender.currentTitle?.characters.first)") 
let newBoardSize = Int(newBoardSizeString) 

を試してみました試してみる?

Int(newBoardSizeString)! 

nilの値をアンラップする前に処理していることを確認してください。

+0

私は試してみましたが動作しません – rv7284

0

これは機能します。

let newBoardSize = newBoardSizeString as! Int 
0
let newBoardSizeString = String.localizedStringWithFormat("\(sender.currentTitle?.characters.first)") 
if let unwrapped = Int(newBoardSizeString){ 
    let newBoardSize = unwrapped 
} 
+0

私は試しましたが動作しません – rv7284

0

let newBoardSizeString = String.localizedStringWithFormat("\(sender.currentTitle?.characters.first!)") 
+0

このコードスニペットは質問に答えるかもしれませんが、方法や理由を説明する文脈はありません。答えを説明するために1つまたは2つの文を追加することを検討してください。 – brandonscript

関連する問題