在線上Stanford CS193p iPhone Application Development課程第6講,構建了一個應用程序,該應用程序將滑塊作爲輸入,並將自定義視圖作爲輸出。設置slider.value時用戶更改滑塊位置時出錯?
當滑塊改變時,視圖控制器再次設置滑塊值。在Happiness 2.zip視圖控制器的
重要位:
@implementation HappinessViewController
@synthesize happiness;
- (void)updateUI
{
// assignment-loop when called from happinessChanged:?
self.slider.value = self.happiness; // sets slider to model's (corrected) value
[self.faceView setNeedsDisplay];
}
- (void)setHappiness:(int)newHappiness
{
if (newHappiness < 0) newHappiness = 0; // limit value
if (newHappiness > 100) newHappiness = 100;
happiness = newHappiness;
[self updateUI]; // changed happiness should update view
}
- (IBAction)happinessChanged:(UISlider *)sender // called by changed slider
{
self.happiness = sender.value; // calls setter setHappiness:
}
不這個結果在一個循環中(滑塊改變 - >模型更新 - >改變滑塊 - >?)?
或者這甚至是好的做法?
好問題。我能在UISlider文檔中找到的唯一線索是:「如果爲」NO「,則當用戶釋放滑塊的拇指控件以設置最終值時,滑塊僅發送一個操作事件。」 – jtbandes
這將是我認爲的「連續」屬性?在演講中,當拖動滑塊時,它必須設置爲「是」,因爲笑臉會改變它的微笑。我猜這個問題會是相同的,但表現方式不同 - 用「YES」和一個不合適的'slider.value'翻譯它可能會是一個生澀的用戶界面+也許是一個動作循環,而用「否」它可能只是成爲循環。 – fabb
是的,我知道「連續」可能沒有關係。我剛剛提到它是因爲它會在發送操作事件時討論*。但我仍然不確定這是否能保證一般工作。這可能是http://devforms.apple.com上的一個好問題。 – jtbandes