2015-06-25 34 views
0

我做一個簡單的WKInterface有開關控制,使一個函數,該函數切換到顯示開關這樣的值: enter image description here不知道爲什麼開關控制總髮送虛假值

我不不知道爲什麼當測試開關時,我收到的結果總是錯誤的?請解釋並告訴我如何解決。正如我認爲那個開關的輸出將從假變爲真並繼續前進......這裏有什麼問題?或Xcode的開關錯誤?

回答

1

嘗試這種情況:對於開關

  1. 首先聲明出口這樣的:

    @IBOutlet weak var mySwitch: UISwitch! 
    
  2. 在viewDidLoad中實現監聽器(目標動作):

    override func viewDidLoad() { 
         super.viewDidLoad() 
         // Do any additional setup after loading the view, typically from a nib. 
    
         mySwitch.addTarget(self, action: "switchChangedValue:", forControlEvents: UIControlEvents.ValueChanged) 
    } 
    
  3. 聲明這個功能,每次更改開關值時都會得到響應:

    func switchChangedValue(sender:UISwitch){ 
    if sender.isKindOfClass(UISwitch){ 
        if sender.on { 
         println("Switch is ON") 
         println("\(sender.on)") 
        } else { 
         println("Switch is OFF") 
         println("\(sender.on)") 
        } 
    } 
    

    }

+0

我知道我可以這樣做。但我不知道爲什麼我的代碼開關不能正常工作。正如我所想,當我按住並拖動開關以編碼並使用動作時。開關的輸出將從真變爲假等等,但是用我的代碼,輸出總是假而不依賴於開關的狀態。 –

+0

你錯過了細節。你必須閱讀「value.on」。這是uiswitch的方法。如果你認爲它的價值不夠。如果value.on爲true,則開關打開。否則關閉。如果開關打開,那麼「開啓」方法將會被讀取。 –

+0

現在我明白了。 –

2

這裏,強似Bool類型的值,將它作爲UISwitch

@IBAction func testSwitchPressed(value: UISwitch) { 
    println(value.on) 
} 

這將正確地告訴我們,如果,如果你的switch是打開還是關閉。

這是偉大的,因爲你可以使用Control Flow以及與此:

@IBAction func testSwitchPressed(value: UISwitch) { 
    //println(value.on) 
    if value.on { 
    println("The switch has been enabled!") 
    //cool features here 
    } else { 
    println("The switch has been disabled!") 
    //other cool features here 
    } 
} 

祝你好運!

+0

如果按CTRL並在InterfaceController源代碼拖動鼠標,下面的功能將被自動添加:- (IBAction)test:(BOOL)value { }.和價值是正確的。 – Lorenzo

+0

當我更改Bool - > UISwitch時,我的代碼在運行代碼時會出錯 –

+0

繼續並重新鏈接您的UISlider連接。 **不要**忘記在你的* Main.storyboard中'控制'點擊''UISlider''並''將'你的UISlider'重新鏈接到你的* View Controller之前'斷開'你當前的連接到'testSwitchPressed' *。 @HieuDucPham –

1

IBAction函數傳遞觸發動作的UIElement。 因此,使用這樣的事情

@IBAction func testSwitchPressed(sender : UISwitch) 
    { 
    println(sender.on) 
    } 
0

如果按CTRL並拖動InterfaceController源代碼中的鼠標,下面的功能將被自動添加:

- (IBAction爲)TapOnSwitch:(BOOL)值 { }

而且值是正確的。 如果您希望在用戶更改交換機的值時檢查該值,這是有效的。

+0

我知道這是正確的,當我按Ctrl並將開關拖動到代碼,但問題是:雖然我照你說的做,但我總是得到的輸出值是假的。 –

相關問題