2013-02-02 73 views
0

有沒有人有一個解決方案,使用NSStepper控制(許多,事實上......)的增量設置爲0.1或任何非整數值而不調用setIncrement:每個NSStepper實例?十進制值的NSStepper

我有一個類似編輯器的用戶界面,需要步進器改變他們的附加值NSTextField以微小增量實例化。

在界面生成器(IB)中將增量設置爲十進制值會使其四捨五入成整數 - 儘管API接受雙精度值。

即使在增量字段中不輸入任何內容,並使用NSStepper子類,該子類將所有實例設置爲例如setIncrement:。 0.1對init未按IB顯然還設置增量爲0或東西init被稱爲後..

不知道如何做,雖然,作爲子類中重寫setIncrement:不叫...

+0

如何創建NSStepper實例?界面生成器或在代碼? – Monolo

+0

如果我在代碼中創建它們,那就沒有問題了吧?我會在那裏設置增量。正如後文中提到的那樣,這些值在IB中設置,即'NSStepper'是在IB(Interface Builder)中創建的 – Jay

+0

不,這應該不成問題,但是您還必須將它們添加到UI以編程方式,所以無論哪種方式,你必須從你的代碼在UI上做一些工作。 – Monolo

回答

1

如果你有很多NSStepper與標準的只有增量不同,那麼你可以嘗試子類NSStepper並覆蓋initWithCoder:這是當從nib文件重新創建對象時調用的初始化程序。

我傾向於考慮initWithCoder:一個指定的初始化與initWithFrame:一起,但在這方面文檔是含糊不清。無論如何,如果您在設置自己的屬性之前致電super,它應該可以工作並且很健壯。如果你這樣做,你也可以考慮覆蓋initWithFrame:來做同樣的初始化,所以你可以通過不同的方式來實例化子類。

對這個缺點的方法是,你將不能夠設置在Interface Builder中increment爲您定製的子類,所以你可能要記錄好它後天性。