2017-08-18 6 views
0

私はプッシュするとラベルにテキストを印刷するボタンがいくつかあります。また、それぞれのボタンが何回押されたかを示すために、テキストの前にカウンターがあります。しかし、ボタンの一部がプッシュされていない場合は、ラベルに0が表示されます。 intの初期値を空白に変換することは可能ですか?ラベルに0を表示しないでください。

if addCount == 0 { 
addCount = String (blankSpace) 
} 
else { 
} 

を、私が試してみました:私も試してみました

var addCount:int = 0 

var blankSpace = "" 

if addCount == 0 { 
addcount = blankSpace 
} 
else { 
.... 
} 

if addCount == 0 { 
addCount = String ("") 
} 

- 私は、おそらくすべてが間違ってこのついて行く、と私はこのような何かを試してみました 私はこれに助けていただければ幸いです。
*
*
*

編集:私は0が消えるように迅速でいくつかの魔法のトリックがあったと思ったので、私は私の質問をしたときに、私はいくつかのショートカットを取りました。ここに全体の設定です:
私はいくつかのテキストを印刷し、カウンタに1を追加するView Controller 1に4つのボタンがあります。データはスウィフトファイルallSumに基づいています。テキストおよびカウンタを表示し
ラベルは、ビューコントローラに2

ですallSum:

import UIKit 


class allSum: NSObject { 
    var btn1Pressed:String = "" 
    var addToBtn1:Int = 0 
    var btn2Pressed:String = "" 
    var addToBtn2:Int = 0 
    var btn3Pressed:String = "" 
    var addToBtn3:Int = 0 
    var btn4Pressed:String = "" 
    var addToBtn4:Int = 0 

     func printToLabel() -> String{ //return a string with the current status 
     return ("\(addToBtn1) \(btn1Pressed + "")") + ("\(addToBtn2) \(btn2Pressed + "")") + ("\(addToBtn3) \(btn3Pressed + "")") + ("\(addToBtn4) \(btn4Pressed + "")") 

     }  

ビューコントローラ1

var total = allSum 

var button1 = "Button 1 Pressed\n"  
var button2 = "Button 2 Pressed\n"  
var button3 = "Button 3 Pressed\n"  
var button4 = "Button 4 Pressed\n"  

@IBAction func no1(_ sender: UIButton) { 
    total.btn1Pressed = button1 
    toal.addToBtn1 += 1 
    } 

@IBAction func no2(_ sender: UIButton) { 
    total.btn2Pressed = button2 
    toal.addToBtn2 += 1 
    }  

@IBAction func no3(_ sender: UIButton) { 
    total.btn3Pressed = button3 
    toal.addToBtn3 += 1 
    }  

@IBAction func no4(_ sender: UIButton) { 
    total.btn4Pressed = button4 
    toal.addToBtn4 += 1 
    }  

ビューコントローラ2

var total = allSum?  

label.text = total.printToLabel() 

この設定では、ボタンを押さないとラベルに0 0 0 0が表示されます。

私の問題は、label.text = ""を設定することができないということです。これは他の変数も印刷されているためです。

私の最初の怠惰に申し訳ありません

+0

? – rmaddy

+0

@rmaddyセットアップ全体で私の質問を編集しました – Eccles

答えて

2

実際のラベルのテキストを空白のスペースとして設定してください。

var addCount:Int = 0 
var blankSpace = "" 

if addCount == 0 { 
    yourlabel.text = blankSpace 
} else { 
    yourlabel.text = "\(addCount)" 
} 
UPDATED

: ここでは以下のコードを使用して、現在のコードを記述し、空白文字列に

を0に変更するあなたの問題を解決する方法ですAllSum

class AllSum { 

    var sumsArray: [Int] = [0,0,0,0] 

    func stringForLabel() -> String { //return a string with the current status 
     var string = "" 

     for (index, value) in self.sumsArray.enumerated() { 
      if value > 0 { 
       string = string + "\(value) Button \(index + 1) was pressed\n" 
      } 
     } 
     return string 
    } 
} 

ビューコントローラ1

タグはUIBuilderで使用できますが、配列内のインデックスに一致するようにします。同じ関数にすべてのボタンをリンクアップ

var total = AllSum() 

@IBAction func numberPressed(_ sender: UIButton) { 
    total.sumsArray[sender.tag] = sumsArray[sender.tag] + 1 
} 

ビューコントローラ2

var total = AllSum() 
label.text = total.stringForLabel() 
+0

ラベルに他の変数も表示されていますので、全体のラベルを ""に設定できません ""私は最初の質問を全体の設定で編集しました – Eccles

+0

しかし、より少ないコードでそれをやろうとするならば、書き直すべきです。 ViewController1のコードは、4つではなく1つの関数に変更することができます。これらのコードはすべて同じことを行うため、ボタンでタグを使用してどちらが押されているかを知ることができます。あなたのallSumクラスは、4つの文字列と4つのintではなく配列と関数で構築できます。 –

+0

@Eccles更新された応答を参照してください –

0

あなたはあなたのように宣言した変数に、""すなわち、文字列を代入することはできませんInt。この場合、ラベルにテキストを設定した時点でこれを処理する方がよいでしょう。あなたはワンライナーをしたい場合は、単純な他/ if文、または三項演算子を使用することができます。

if addCount == 0 { 
    self.label.text = "" 
} else { 
    self.label.text = "\(addCount)" 
} 

そして、三元オプションのために:

self.label.text = addCount == 0 ? "" : "\(addCount)" 
+0

@rmaddyありがとう - 私はこれを修正しました。私は最初の読書でそれを逃した。 – creeperspeak

+0

ラベルには他の変数も表示されているので、ラベル全体を設定することはできません。 " – Eccles

0

あなたがintを設定しようとしているが文字列に変換します。 Swiftはタイプセーフな言語であり、あなたにそれをさせるものではありません。何らかの理由で同じ変数を両方の状態にする必要がある場合は、関連付けられた値を持つ列挙型を使用し、Describableである限り、それを使用することができます。

は、代わりにあなただけの変数がゼロの場合は空白の文字列を返す文字列を返す計算された値を持つことができます。

ラベルのテキストを設定するためのコードがあります
func displayCount() -> String { 
return addCount == 0 ? String() : String(describing:addCount) 
} 
関連する問題