Wie das umzusetzen, delegate und datasource-Methoden für die UICollectionView, wenn es innerhalb einer benutzerdefinierten TableViewCell in iOS, objective-C
Hinweis : ich möchte nicht alle Bibliotheken von Drittanbietern
- Ich habe
tableview
mit mit einer customtable view cell
(table view funktioniert Prima). - Nun in die
table view cell
ich umsetzen wollen einencollection view
. - Nun mein problem ist , wo sollte ich mit der Umsetzung der
delegate
Methoden unddata source
Methoden zur Sammlung anzeigen, die in dencustom table view cell
. unten ist das, was ich versucht habe.
Tabel-View-Controller Implementierung
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 5;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
FirstTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"tvcell"];
return cell;
}
richtig funktioniert
nun in diesem FirstTableViewCell
es ist ein collection view
.
Dies ist mein FirstTableViweCell.h-Datei
#import <UIKit/UIKit.h>
@interface FirstTableViewCell : UITableViewCell<UICollectionViewDelegate,UICollectionViewDataSource>
@property (weak, nonatomic, nullable) IBOutlet UICollectionView *insideCollectionView;
@property (strong, nonnull,nonatomic) NSArray *mycollectionData;
- (void)setColletionData :(nonnull NSArray *)collectionData;
@end
und das ist mein FirstTableViewCell.m-Datei
#import "FirstTableViewCell.h"
@implementation FirstTableViewCell
- (void)awakeFromNib {
[super awakeFromNib];
self.insideCollectionView.delegate = self;
//Initialization code
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
//Configure the view for the selected state
}
- (void)setColletionData:(NSArray *)collectionData
{
self.mycollectionData = collectionData;
[self.insideCollectionView reloadData];
}
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return 10;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell *ccell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cvcell" forIndexPath:indexPath];
return ccell;
}
@end
folgende Methode
- (void)setColletionData:(NSArray *)collectionData
{
self.mycollectionData = collectionData;
[self.insideCollectionView reloadData];
}
Ich verwendet, um die array
für collectionView
im cellforrowatindexpath
im tableview
Also, was ist die richtige Art zu implementieren
DataSource
undDelegate
Methoden für dieCollectionView
innerhalb derCustom Table
.
View Cell
- Sie tun perfekt. 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Horraaaaaaaay ..... =D Dies ist die abgeschlossene Antwort für diese.
Table View-Implementierung .m-Datei
Umsetzung in der Benutzerdefinierten Ansicht Tabelle Zelle
benutzerdefinierte Tabelle anzeigen .h-Datei
benutzerdefinierte Tabelle anzeigen .m-Datei
Was Sie haben, ist im wesentlichen korrekt. Die einzige wirkliche änderung, die Sie brauchen, ist ein update der collection view-data-source und delegate-Methoden in der benutzerdefinierten Zelle-Klasse, so dass Sie ordnungsgemäß Verweis
self.mycollectionData
.Zum Beispiel. Ändern
numberOfItemsInSection
zu:self.mycollectionData = collectionData;
es zeigt den Grafen als2
, aber es hat nicht für eineUICollectionView
delegate
Methoden in meinemcustom table view cell
. soll ich anrufenself.insideCollectionView.datasource = self;
innerhalb derawakeFromNib
Methode.