Hinzufügen eines UIButton zu einem UICollectionView Zelle programmgesteuert
Ich habe einen UIViewController mit einem UICollectionView innerhalb programmgesteuert. Ich möchte eine Schaltfläche hinzu, die die Zelle:
viewDidLoad:
UICollectionViewLayout *layout = [[UICollectionViewFlowLayout alloc]init];
_collectionView = [[UICollectionView alloc]initWithFrame:self.view.bounds collectionViewLayout:layout];
[_collectionView setDataSource:self];
[_collectionView setDelegate:self];
[_collectionView registerClass:[EMCell class] forCellWithReuseIdentifier:@"Cell"];
[self.view addSubview:_collectionView];
Dann:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
EMCell *cell = (EMCell *)[collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
cell.backgroundColor = [UIColor greenColor];
UIButton *button = (UIButton *)[cell viewWithTag:200];
[button setFrame:CGRectMake(10, 10, 50, 60)];
[button setTitle:@"Button" forState:UIControlStateNormal];
[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
[cell addSubview:button];
return cell;
}
Was mache ich falsch?
- Was ist der Fehler???
- Sie sind das hinzufügen einer Schaltfläche, um die Zelle jedes mal, wenn es verwendet wird. Verstehen Sie, dass die Zellen Holen, die wiederverwendet werden, richtig? Warum gehst du nicht fügen Sie einfach die Schaltfläche in Ihrem
EMCell
Klasseinit
Methode? - die Schaltfläche wird nicht angezeigt.
- Auch, Sie sollten hinzufügen der Schaltfläche, wie eine Untersicht
cell.contentView
. - hinzufügen der Schaltfläche, wie eine Untersicht con contentView der Zelle, und initialisieren Sie die Schaltfläche in der Zelle init-Methode mein problem gelöst. Vielen Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fügen Sie Ihre Schaltfläche als Untersicht
cell.contentView
. Auch nicht erstellen, der button jedes mal, wenncollectionView:cellForItemAtIndexPath:
genannt wird. Sie könnte die Wiederverwendung einer vorhandenen Zelle, die bereits eine Taste hat. Besser, fügen Sie den button in der benutzerdefinierten Zelleinit
- Methode statt. Dann blenden Sie einfach die Taste, wenn Sie es nicht brauchen.