2010-05-18 52 views
3

如果我通過Interface Builder在視圖中設置了UIScrollView,如何在ViewController實現中獲取對它的引用?我想以編程方式向滾動視圖添加標籤。如何在視圖中獲取對控件的引用?

例如,在C#中,如果您在UI /窗體中聲明瞭文本框,則可以通過簡單地使用爲該文本框聲明的ID來訪問它。這在目標c中似乎並不簡單。

感謝 凱文

回答

1

假設我理解你正確,你是從實例包含子視圖,包括你想要的UIScrollView的一個的.xib視圖控制器,有兩種方式 - 首先,你可以將子視圖數組中找到它由視圖控制器擁有。其次,您可以在頭文件中添加一個IBOutlet引用,然後在界面構建器中使用連接檢查器進行連接。然後你可以參考代碼中的對象,更改框架,添加標籤等。

+0

是的,這聽起來像你理解正確。 所以有一種ViewController方法返回視圖中所有控件的數組? – Kevin 2010-05-18 00:49:38

+0

每個UIViewController都有一個視圖屬性,它是一個UIView。每個UIView都有一個屬性子視圖,它是UIViews的一個數組。然而,使Interface Builder中的鏈接比通過數組更容易,並且隨着視圖數量和子視圖數量的增加,特別需要標識所需的對象。持續引用您想訪問的內容會更方便。 – 2010-05-18 00:57:18

+0

查看http://itunes.stanford.edu/ - 點擊鏈接到斯坦福iTunes U部分,然後找到iPhone課程 - 或者在iTunes商店搜索欄中搜索「CS193P」。看看講座1和講座2,當看到別人這樣做時,如何讓界面生成器改變更容易。 – 2010-05-18 01:11:16

1

您需要將您的ViewController連接到您的Nib文件。這非常簡單。這是在iPhone/iPad上使用Interface Builder的基本工作流程:

  • 將'File's Owner'的類設置爲視圖控制器的類。你可以通過在你的nib窗口中選擇'File's Owner'對象,按下Command-4,然後通過下拉菜單設置類來完成。
  • 創建具有以下格式的視圖控制器屬性:

    @屬性(非原子,保留)IBOutlet中的UIScrollView滾動視圖*;

IBOutlet關鍵字是一個評估爲無效的宏。所以它實際上並沒有對你的代碼做任何事情,只是讓Interface Builder知道'scrollView'屬性可以被綁定。

  • 從您想要綁定到您的ViewController的對象進行控制拖動。在彈出窗口中,您可以選擇您想要綁定到滾動視圖對象的屬性。

這種東西是非常基本的Xcode的東西。如果你閱讀任何教程,它會涵蓋這一點。祝你好運,並享受!

編輯: 我應該補充說,如果您使用New File對話框中的默認「New UIViewController Subclass」,它將爲您完成第一步。你將有一個nib文件和一個已經彼此瞭解的View Controller。


  1. 是的,你寫的代碼是你在你的頭需要。只要確保將Scroll View對象連接到Interface Builder中的屬性即可。
  2. 是!在完成Nib文件中指定的所有連接之後添加'viewDidLoad',因此您可以確信scrollView指向正確的對象(假設Nib中的所有內容均已正確連線,這很容易犯錯)
+0

我確實使用了File對話框中的New UIViewController子類。我也已經在頭文件中添加了屬性,並在實現中使用了Synthesize關鍵字。 這是我的ViewController頭像。那麼它是否像通過名稱調用/操縱控件一樣簡單(在本例中爲Scroller)? #進口 @interface MyViewController:UIViewController中 { \t \t的UIScrollView *卷軸; } @property(nonatomic,retain)IBOutlet UIScrollView \t * scroller; @end – Kevin 2010-05-18 01:02:06

+0

假設我已經正確連線了,我怎樣才能在ViewDidLoad事件的滾動視圖中添加一個視圖?它是否簡單到「[scrollView addSubview:label];」 – Kevin 2010-05-18 01:15:43

+0

我編輯了你的問題的答案。 – kubi 2010-05-18 02:19:05