我有我的當前iPhone應用程序的頂部列表視圖,這是由代碼填充。我使用Interface Builder組裝了視圖,因此它包含很多UILabel
s。是否可以使用類似IBOutlet數組的東西?
很顯然,我不希望在我的課name1
,name2
等網點,但更喜歡name[10]
陣列。
是否有可能這樣做,並將每個項目連接到適當的標籤(或任何其他接口生成器,如視圖)?
我有我的當前iPhone應用程序的頂部列表視圖,這是由代碼填充。我使用Interface Builder組裝了視圖,因此它包含很多UILabel
s。是否可以使用類似IBOutlet數組的東西?
很顯然,我不希望在我的課name1
,name2
等網點,但更喜歡name[10]
陣列。
是否有可能這樣做,並將每個項目連接到適當的標籤(或任何其他接口生成器,如視圖)?
你不能在IB中完成它,但是你可以在你的init
方法中創建一個數組並將所有標籤添加到它。
順便說一句,您可以爲每個標籤設置一些標籤並定義宏來訪問它。水木清華像
#define NAME[TAG] (UILabel*)[self.view viewWithTag:TAG]
這可以通過出口集合來完成,見this related question。
你當然可以使用界面製作工具,關鍵字是IBOutletCollection
。它所做的基本上是一個NSArray,它是由多個接口構建器插座組成的。
IBOutletCollection(UILabel) NSArray *myLabels;
所以接下來的事情將在Interface Builder來連接您的標籤,然後你可以使用數組在運行時可以訪問所有的標籤。
按照以下步驟來創建出口數組的它與IB元素連接(這裏是舉例UIView
,您可以使用UILabel
也):
-
class ViewController2: UIViewController {
@IBOutlet var collection:[UIView]!
override func viewDidLoad() {
super.viewDidLoad()
}
}
這必須是在界面生成器和Xcode中的一項新功能,是不是? – shinjin 2011-01-13 12:06:58
@Shinjin:當這個功能可用時,我無法給你確切的日期或發佈,但我知道它現在有一段時間了(至少一歲)。 – JustSid 2011-01-13 12:43:06
我在其他地方看過這是從iOS 4開始添加的。但是,您不能依賴IBOutlets的順序(或者不能;不確定它是否已被iOS 8修復)。 – ultrageek 2015-04-20 08:57:00