我一直在嘗試所有下午在滑塊上正確設置值。這真讓我抓狂。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
}
});
這對於所有人來說都是一個很大的幫助,可以更詳細地描述*你實際做了什麼*修復而不是像「一系列的陳述」那樣模糊的東西。 – 2015-10-16 21:24:36