2011-01-12 47 views
0

我已經創建了一個基本的應用程序,創建了一個子類NSView,並在界面構建器中將其添加爲自定義視圖。一切正常。NSProgressIndicator的困境 - 也許我的NSView子類?

但是,某些事情不能正常工作,這讓我想知道我的NSView是正確的子類?具體來說,當使用NSProgressIndicator時,我可以在不確定的情況下使用startAnimating:和stopAnimating,但是如果我嘗試使用incrementBy對確定進行任何操作,它什麼也不做。

即使我將確定的NSProgressIndicator的默認值設置爲50.0,它仍會在應用程序啓動時顯示爲0.0,儘管在IB中看起來不錯。

我的NSProgressIndicator作爲一個IBOutlet正確連接,我可以告訴它隱藏等,只是不能讓它動畫。但是,我也有其他問題,讓我覺得這個問題實際上是我的NSView子類(如快速查看不發射)。

在我的子類中,我只是重寫了initWithFrame:和drawRect方法,調用它們的[super]。正如我所說的,我已經將它作爲界面構建器中的自定義視圖並將其更改爲MyCustomView。所有的工作正常大多......?

我的分類不正確,還是沒有在界面生成器中正確地做一些事情?我似乎錯過了一些小東西?!

回答

0

你需要重寫initWithFrame:,而不是init。這可能是問題。

另一件需要注意的進度指示器:如果您正在做很多工作,可能需要將其延遲到下一次運行循環迭代以刷新進度指示器。使用延遲執行(performSelector:withObject:afterDelay :)或類似的東西來允許UI更新。

+0

謝謝,抱歉,我正在做initWithFrame ...可能是因爲我通過.xib加載,需要over awakeFromNib嗎? – mootymoots 2011-01-12 11:19:38

1

解決了它。

我最初做在我awakeFromNib方法如下:

- (void)awakeFromNib{ 
    [super awakeFromNib]; 
} 

事實證明,awakeFromNib不應該稱之爲超級,如果它是直接下的NSView。刪除超級解決了這個問題。

- (void)awakeFromNib{ 
}