2017-02-23 1 views
0
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 

    SectionHeaderView *sectionHeaderView = [self.tableView dequeueReusableHeaderFooterViewWithIdentifier:SectionHeaderViewIdentifier]; 

    Category *sectionInfo = (self.sectionInfoArray)[section]; 
     sectionHeaderView.categoryLabel.text = sectionInfo.categoryName; 
    NSLog(@"header section: %@", sectionInfo.categoryName); 

    sectionHeaderView.section = section; 
    sectionHeaderView.delegate = self; 

    return sectionHeaderView; 

} 

Hinweis: Category meine Modellklasse, die auch meine VernetzungIch mag in Storyboard von UITableView Zelle xib-Datei verwenden

SectionHeaderView ist meine xib Ansicht, die UILabel genannt enthält WebService enthält: categoryLabel.

Ich möchte meine Daten in das UILabel-Feld in der XIB-Ansicht anzeigen und im Header-Abschnitt der UITableviewCell anzeigen.

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSObject 0x14ee9d50> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key view.' 
*** First throw call stack: 
+0

Haben Sie die korrekte Klasse des verschiedenen Objekts (die Wiederverwendungsansicht) für SectionHeaderView in Ihrem Xib festgelegt? – Larme

+0

Ja, ich kann meine categoryName-Daten zu einem Textlabel der uitableview-Zelle anzeigen, aber wenn die gleichen Daten mit uilabel angezeigt werden sollen, die mit der uitableviewcell-Klasse verbunden sind, dann erhalte ich den obigen Fehler. liegt daran, dass ich den Kategorienamen direkt von der Modellklasse aus anzeige. – san

Antwort

0

diesen Code Versuchen ...

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 
    SectionHeaderView *sectionHeaderView = (SectionHeaderView *) [[[NSBundle mainBundle] loadNibNamed: @"SectionHeaderView" owner:self options:nil] firstObject]; 

    Category *sectionInfo = (self.sectionInfoArray)[section]; 
    sectionHeaderView.categoryLabel.text = sectionInfo.categoryName; 
    NSLog(@"header section: %@", sectionInfo.categoryName); 

    sectionHeaderView.section = section; 
    sectionHeaderView.delegate = self; 

    return sectionHeaderView; 
} 
0

Sie die genügend Informationen liefern did't wie u in der benutzerdefinierten die Header-Ansicht sind initilising SectionHeaderView, jede Art, wie ich das Beispiel geben, wie u kann die benutzerdefinierte Header-Ansicht mit benutzerdefinierten Ansicht und Xib-Datei,

zuerst Sie brauchen Unterklasse der UITableViewHeaderFooterView, lassen Sie uns sagen Sie es als SectionHeaderView.

in XIB, stellen Sie sicher UIView Klasse auf SectionHeaderView. dann können Sie nur Outlets für UI-Elemente erstellen.

in SectionHeaderView.h,

@interface SectionHeaderView : UITableViewHeaderFooterView 
@property (weak, nonatomic) IBOutlet UILabel *categoryLabel; 
@end 

und in SectionHeaderView.m

#import "SectionHeaderView.h" 

@implementation SectionHeaderView 

- (void)awakeFromNib 
{ 
    //do things after nib is loaded 
    [super awakeFromNib]; 

} 

- (void)layoutSubviews 
{ 
    [super layoutSubviews]; 
    //set frames hear 
} 

@end 

und in ViewController.m, registrieren die xib-Datei, die u

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    [self.aTableView registerNib:[UINib nibWithNibName:@"SectionHeaderView" bundle:nil] forHeaderFooterViewReuseIdentifier:@"HEADER_REUSE_ID"]; 
} 

und in dem Verfahren verwenden werden ,

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    SectionHeaderView *view = [tableView dequeueReusableHeaderFooterViewWithIdentifier:@"HEADER_REUSE_ID"]; 
    view.categoryLabel.text = [NSString stringWithFormat:@"section:%ld",(long)section]; 
    return view; 
} 
Verwandte Themen