2014-09-23 33 views
0

我一直在嘗試所有下午在滑塊上正確設置值。這真讓我抓狂。UISlider setValue無法正常工作

首先,這部分代碼正在工作。我從一個網頁套接字(socketRocket庫)的消息,我轉換成浮動和我的滑塊設置到合適的位置

- (void) webSocket:(SRWebSocket *) webSocket didReceiveMessage:(id)message{ 
     float stateValue = [message floatValue]; 
     zoneSlider.value = stateValue; 
     zoneSlider.alpha = 1; 
    } 

所以這段代碼正確地設置滑塊(zoneSlider)的價值,並使其可見,正是我所需要的。

但是對於視圖的第一次打開,我還需要將滑塊以編程方式設置爲默認值(由於某些原因,直接在故事板屬性檢查器中設置它不適合我的需要)。

我寫了這個代碼:

float defaultValue = 30.0f; 
[zoneSlider setValue:defaultValue animated:NO]; 
zoneSlider.alpha = 1; 

它(左上)將滑塊設爲零。我已經嘗試了多種解決方案(使用zoneSlider.value = defaultValue等從NSString中創建一個浮點來複制與webSocket消息一起工作的內容)。

我做錯了什麼?

謝謝!

PS:當webSocket收到一條消息(方法didReceiveMessage)時,將使用slider和setValue(工作和非工作之一)。然而,對於不工作的消息發送到dispatch_async方法內的套接字(我絕對不熟悉...)。它可能是麻煩的來源,雖然我沒有看到任何理由。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
    while (viewActive == true){ 
     // Pause between refresh 
     NSDate *future = [NSDate dateWithTimeIntervalSinceNow: 5 ]; 
     [NSThread sleepUntilDate:future]; 

     //Code in this part is run on a background thread 
     [self sendGetState]; //Then a message is sent and we go to the setValue 
    } 
}); 

回答

-1

我發現我的問題!我在一個很長很複雜的「if」測試中犯了一個錯誤。一個應該是「其他人」。

新人的錯誤,我在未來的壓痕中會更嚴格...

+0

這對於所有人來說都是一個很大的幫助,可以更詳細地描述*你實際做了什麼*修復而不是像「一系列的陳述」那樣模糊的東西。 – 2015-10-16 21:24:36

1

您是否嘗試過更改最大值和最小值?

+0

我剛試過。我從0-100切換到-50-50。 它沒有做太多改變,但我注意到一些有趣的事情。滑塊,而不是設置爲30(在這種情況下,幾乎最大的權利),現在下降到0時,我使用該方法。 我想我的浮動有些問題,但我沒有看到什麼 – Charles 2014-09-24 07:28:55

+0

此外,我試圖將消息轉換添加到非工作方法的浮動。它工作正常,所以我想我的「線索」線索是無關緊要的 – Charles 2014-09-24 07:37:37

+0

這確實欺騙了我 – iAkki 2018-01-20 14:33:00