2016-08-29 7 views
2

私はテスト値でボタンを更新しようとしていますが、毎秒ボタンのタイトルテキストがテスト値を数秒間表示していますが、デフォルト値。UIButtonのテキストコンテンツは毎秒更新をリセットし続けます

これはバグだと思われますが、より簡単な説明があるかどうかを見たいと思っていました。 ボタンを押す前に10秒間待つことを試みましたが、これは一貫して発生しているようです。

UIButtonを期待どおりに機能させる方法はありますか?

import UIKit 

class ViewController: UIViewController { 

    var testEntry = "its working" 
    @IBOutlet weak var testButton: UIButton! 
    @IBOutlet weak var testLabel: UILabel! 

    @IBAction func runTest(sender: 
     UIButton) { 
     // The button value should equal the value of the label value, but every 2nd button press of the test button results in the title of the button value resetting to the default value 
     dispatch_async(dispatch_get_main_queue()) { 
      self.testLabel.text = "\(self.testEntry)" 
      self.testButton.titleLabel?.text = "\(self.testEntry)" 
     } 
    } 

Hereはgithubプロジェクトです。

+2

状態でのsetTitleメソッドが、直接、一貫 –

+0

をtittlelabelする値を設定します私の経験を共有 –

+0

機能doesntの仕事は、私は、あまりにも客観Cとスウィフトに同様の問題を何度も直面した場合、設定されたタイトルを削除する必要のようですねいつかくぼみ仕事 –

答えて

5

ボタンのタイトルラベルのテキストを直接設定しないでください。ラベルに直接フォントを設定する必要があります。テキストは異なるタイトルを持っているその状態の一部の間でスイッチングしているボタンを選択すると、選択解除しているため、テキストが切り替わります。

func setTitle(_ title: String?, forState state: UIControlState) 
を呼び出して設定する必要があります

+0

おかげで素敵な説明。私は実際にこの問題を以前は持っていましたが、忘れました。 Appleは本当にこれを修正するか、それを非難するべきです –

0

かわりtitleLabel財産を...以下の方法を使用して

self.testButton.setTitle(self.testEntry, forState: .Normal) 

をボタンのタイトルテキストを設定する必要があります。

作品alwyz
関連する問題