2013-04-12 27 views
0

我有從0值UISlider爲1上的應用程序設置UISlider值開始

的問題是,如果我把它滑動到一個值,然後關閉應用程序,並重新打開應用程序時,UISlider都留在了由滑動設置的值。基本上它記得它最後的價值。

我已經嘗試了一些代碼來設置它,以便它可以始終在0時ViewController出現,但它不起作用。我想這個代碼viewDidLoad

mySlider.value = 0; 

而且我也試過這樣:

[mySlider setValue:0] 

但他們都沒有工作。

如何在應用程序打開時將UISlider始終置於0?

+0

你是什麼意思關閉應用程序,發送到後臺或殺死。 – Madhu

+0

我相信他意味着發送到後臺,因爲殺死它並重新打開ViewController會再次調用viewDidLoad,所以沒問題。 – rdurand

+0

是的,我的意思是把它發送到背景,而不是殺死它。 – tribulant

回答

3

如果您不想看到滑塊值更改,請將您的代碼([mySlider setValue:0])置於viewWillAppear之內,如果您想要看到它的更改,請將其置於viewDidAppear之內。

viewDidLoad僅在創建視圖時調用,它在加載後顯示時未調用(例如,退出應用程序並返回,從UINavigationController導航中的推/等)。

請注意,如果您想查看動畫,則可以使用此方法:[mySlider setValue:0 Animated:YES];

+0

謝謝你的幫助,我很感激。我可能做錯了什麼,但如果我第一次打開應用程序,它就可以工作。把應用程序放在後臺並重新打開不會再激發這個viewDidAppear。在將應用程序置於後臺之前,滑塊值仍然是最後剩下的值。有任何想法嗎? – tribulant

+0

viewDidAppear內部的日誌記錄僅在應用程序第一次打開時有效,它在將應用程序發送到背景並再次打開後不會再次記錄。 ' - (void)viewDidAppear:(BOOL)animated {switchSlider setValue:1 animated:YES]; [self valueChanged:nil]; NSLog(@「viewDidAppear called」); }' – tribulant

+0

我在AppDelegate中將'viewDidAppear'添加到'applicationWillEnterForeground'並解決了這個問題。我不知道這是否是正確的方法,因爲我是新來的Objective-C – tribulant

相關問題