2016-09-22 4 views
-2

Ich habe eine TabelleView mit 2 Abschnitten, die Abschnitte Array ist mit 2 Elementen festgelegt. Die Header für die Sektionen waren in Ordnung, wie der Code unten in Xcode 7 zeigt. Ich habe gerade einen Upgrade auf Xcode 8 durchgeführt und die Section Header werden nicht mehr angezeigt, der Code unten wird nicht mehr aufgerufen.viewForHeaderInSection funktioniert nicht mehr in xcode 8

Irgendwelche Ideen?

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 18)]; 
    /* Create custom view to display section header... */ 
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 5, tableView.frame.size.width, 18)]; 
    [label setFont:[UIFont boldSystemFontOfSize:16]]; 
    NSString *date =[sections objectAtIndex:section]; 
    /* Section header is in 0th index... */ 
    [label setText:date]; 
    [view addSubview:label]; 
    [view setBackgroundColor:[DeviceHelper Orange]]; //[UIColor colorWithRed:166/255.0 green:177/255.0 blue:186/255.0 alpha:1.0]]; //your background color... 
    return view; 
} 
+4

Dies ist keine Tabellenansicht Delegat oder Datenquelle Methode. – rmaddy

+0

Ruft Ihre [tableView: viewForHeaderInSection: '] (https://developer.apple.com/reference/uikit/uitableviewdelegate/1614901-tableview?language=objc) diese Methode auf? Oder vielleicht einfacher, setzen Sie einfach diesen Code in Ihre 'viewForHeaderInSection'. Unterm Strich zeigen Sie uns Ihre 'viewForHeaderInSection'. – Rob

+0

Ich habe den obigen Code in viewForHeaderInSection geändert, wird immer noch nicht aufgerufen. Übrigens, der obige Code wurde in xcode7 gut, aber nicht xcode8 aufgerufen. – user1529412

Antwort

7

Verwenden Sie diese Methode, wie es ist, werden Sie die Header-

NB sehen: Setzt den Delegierten und Datenquelle von Tableview

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return 50; 
} 

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 
{ 
    return 100; 
} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 3; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; 
{ 
    return 5; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 
{ 
    static NSString *reuseId = @"reuseid"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseId]; 

    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseId]; 
    } 

    cell.textLabel.text = @"Test"; 

    return cell; 
} 
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 18)]; 
    /* Create custom view to display section header... */ 
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 5, tableView.frame.size.width, 18)]; 
    [label setFont:[UIFont boldSystemFontOfSize:16]]; 
    NSString *date = @"22nd Sept 2016"; 
    /* Section header is in 0th index... */ 
    [label setText:date]; 
    [view addSubview:label]; 
    [view setBackgroundColor:[UIColor orangeColor]]; //[UIColor colorWithRed:166/255.0 green:177/255.0 blue:186/25 

    return view; 
} 
+0

Verwenden Sie Xcode 8 oder Xcode 7, weil ich dieselben Methoden habe wie Sie. Wie ich schon sagte, es hat immer funktioniert, ich habe nur xcode aktualisiert und die Header sind einfach verschwunden. – user1529412

+0

XCode 8 Beta-Version – Janmenjaya

+3

Ich habe tatsächlich gefehlt - (CGFloat) tableView: (UITableView *) tableView heightForHeaderInSection: (NSInteger) Abschnitt { zurück 40; } ......... Als ich das hinzugefügt habe, hat es funktioniert ... Das war aber im vorherigen Xcode (7) nicht nötig ... Danke. – user1529412

2

Stellen Sie sicher, heightForHeaderInSection zusätzlich müssen Sie Ihre viewForHeaderInSection Funktion

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 
{ 
return 30; 
}