剛開始使用UICollectionView
。我用IB在UIViewController
中創建了一個簡單的UICollectionView
。它通過分頁水平滾動。我在UICollectionView
內部放置了一個簡單的UICollectionViewCell
。我爲單元設置了重用標識符。viewWithTag在初始化UICollectionViewCell時返回nil
我在UICollectionViewCell
內放置了一個標籤爲100的UILabel
。
在viewDidLoad
,我呼籲:
[_collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"Thing"];
後來我嘗試初始化像這樣的小區:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Thing" forIndexPath:indexPath];
cell.backgroundColor = [UIColor greenColor];
UILabel *nameLabel = (UILabel *)[cell viewWithTag:100];
nameLabel.text = @"Bogus";
return cell;
}
當我運行應用程序,視圖加載正確;我可以水平滾動2個單元格。我看到了識別每個細胞的難看的綠色。
但是,viewWithTag
方法返回nil
,因此nameLabel文本未設置。
爲什麼?
請注意,我也嘗試定義一個自定義的子類UICollectionViewCell
並調用registerClass。在IB中,我將單元類更改爲自定義子類,並將子類中的UILabel
與UILabel
插座綁定。
但這也行不通。 (我寧願避免使用自定義子類方法,因爲似乎沒有必要定義僅用於保存IBOutlets
的類。)
我在想我在這裏丟失了一些明顯的東西。這裏
類似問題描述:
Trouble accessing Image from instance of UICollectionViewCell
你在哪裏創建UILabel? – Odrakir
UILabel在Interface Builder中配置。我不期望在代碼中進行分配。我在想,viewWithTag應該檢索創建的實例。這是它如何與UITableView一起工作。 – Daniel
您是否在您的筆尖中爲您的原型CollectionViewCell指定了reuseIdentifier? – chandu