2011-11-18 32 views
0

首先,我是超級新的Objective-C/iOS開發,事實上,這個問題是我的第一個測試項目。另外,我來自C#/ WinForms背景,所以我正在用iOS界面設計和應用程序狀態的某些預先設想的概念進行開發。請忍耐一下,幫助我澄清我的困惑。如何以編程方式訪問Nib中的各種UIViews?

我剛剛創建了我的第一個iOS應用程序項目,它由單一視圖組成。我允許Xcode通過Single View項目嚮導爲我創建所有文件。當它完成後,我打開新的應用,在設計單UIView筆尖文件,我放棄了三個滑塊到視圖。

此應用程序的預期目的非常簡單 - 每個滑塊對應於與我的視圖的背景顏色相關的R,G或B值。

我已經想通了如何設置我的視圖的背景,但我無法弄清楚如何訪問每個滑塊對象的值。是的,我可以連接並響應每個滑塊的IBAction,但我的計劃是每次滑塊的值更改時,我都希望IBAction調用重構的方法,以訪問所有三個滑塊的值,然後設置視圖背景顏色基於與每個值相關聯的值。

如何訪問我的滑塊的價值?具體來說,我如何訪問我通過將它們拖放到Nib設計器窗口中創建的滑塊的值?我看過代碼解釋瞭如何以編程方式向您的UIView編程添加UISlider,然後訪問該值,但是如何訪問添加到Nib中的UISlider的值,並且我假設它將在編譯時自動「接線」時間?

希望這使得自?如果我錯過了中間步驟或關鍵概念,請告訴我。

回答

2

創建UISlider實例變量/屬性,使它們IBOutlets:

@property (nonatomic, retain) IBOutlet UISlider* yourSlider; 

你在你的.m文件合成它和IBOutlet中的界面生成器連接。 yourSlider指針然後是對您連接到的對象的引用。請注意,它只會加載UIViewController的視圖,因此在調用viewDidLoad之前爲零。你還必須在viewDidUnload方法將其設置回零

self.yourSlider = nil; 

(因此它被釋放)。在Xcode 4中,您可以通過一個操作(參見What's new in XCode 4的「Interface Builder內置」)完成上述所有步驟。便捷方式

1

類似於CTRL +從UISlider拖動到.m文件以創建在IBAction爲,您可以CTRL +從筆尖設計師拖動UISlider到相關的.h文件中,並讓它爲你創建一個屬性。然後,從您的.m文件中,您可以訪問self.mySlider(或任何您指定的屬性)。

有一個視頻this page顯示綁定到UISlider具體。

0

另一種方法是使用一個視圖的標籤屬性。

@property(nonatomic) NSInteger tag 

- (UIView *)viewWithTag:(NSInteger)tag 

您可以在界面構建器中設置視圖的標籤屬性,並稍後在控制器中引用該視圖。

​​

在一般情況下,最好是堅持使用IBOutlets。但是,在某些情況下使用標籤更有意義。

祝你好運!

相關問題