2015-06-04 10 views
7

Ich kann über das falsch gehen. Also habe ich ein UITableView erstellt, das im Wesentlichen einen nachgestellten Auto-Layout-Abstand zur Hauptansicht hat. Ich erstelle eine benutzerdefinierte Zelle für diese Tabelle, also drehe ich eine Prototypzelle, passe sie an und erstelle meine Klasse dafür. Das funktioniert alles gut.iOS - Benutzerdefinierte Tabellenzelle nicht die volle Breite von UITableView

Was ich nicht zu lösen scheint ist, dass die benutzerdefinierte Zelle nicht die volle Breite der tatsächlichen Zelle der Tabelle geht, so dass ein weißer Hintergrund nur auftaucht. Wenn ich die benutzerdefinierte Zelle nicht verwende, wird die gesamte Breite Tabellenzelle verwendet.

Ich legte die Einschränkungen für den Zellinhalt so fest, dass das Hintergrundbild die Zelle füllen sollte.

Was mache ich falsch? Lassen Sie mich wissen, was Sie brauchen, um dieses Problem zu lösen.

ProfileCustomCell.h

#import <UIKit/UIKit.h> 

@interface ProfileCustomCell : UITableViewCell { 

} 

@property (nonatomic, strong) IBOutlet UILabel *nameLabel; 
@property (nonatomic, strong) IBOutlet UIImageView *profileImageView; 

@end 

ProfileCustomCell.m

#import "ProfileCustomCell.h" 

@implementation ProfileCustomCell 

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { 

    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 

    if (self) { 
     self.nameLabel.text = nil; 
    } 

    return self; 

} 

- (void)setSelected:(BOOL)selected animated:(BOOL)animated { 
    [super setSelected:selected animated:animated]; 
} 

@end 

UITableView

[tableView registerNib:[UINib nibWithNibName:@"ProfileCustomCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"Cell"]; 

[tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]; 

ProfileCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 

cell.nameLabel.text = [NSString stringWithFormat:@"%@", [child objectForKey:@"first_name"]]; 
[cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 

enter image description here

+0

Überprüfen Sie die Größe des Hintergrundbildes der Zelle. Ich denke, es ist ein Problem des automatischen Layouts. – Ryan

+0

Es ist etwas mit der Zelle selbst zu tun. Wenn es nur ein Hintergrundbildproblem wäre, wäre das Etikett nicht da, wo es ist. Es wäre der ganze Weg nach rechts. –

+0

geben Zelle Farbe und identifizieren, was ist die Zellgröße –

Antwort

2

Können Sie den Code bitte posten.

Haben Sie das Verwenden Sie Auto-Layout und Verwendung Größenklassen wie unten tut, dass zuerst in beide Tabellenansicht und Tabellenansicht Zelle ermöglichen.und sagen Sie mir Ihr Problem

enter image description here

1) Danach wählen Sie sowohl Bild- als auch Etiketten- und tun, wie unten

enter image description here

2) Wählen Sie das Bild und tun unten

enter image description here

3) wählen Sie die Markierung ein gehen Sie wie folgt

enter image description here

Können Sie den Link unten überprüfen:

Table cell content(title) moving left after selecting cell

+0

Das hat perfekt funktioniert. Ich hatte ursprünglich eine XIB-Datei oder die Zelle, aber ich versuchte es im Storyboard, aber es funktionierte nicht so, wie ich es wollte. Zurück zur XIB-Datei und Einstellung Auto-Layout verwenden und Größenklassen verwenden war was ich vermisste. Vielen Dank! –

+0

Gern geschehen. Wenn du Probleme mit dem automatischen Layout hast und du es auf den Stack-Overflow gepostet hast, kannst du mich darüber informieren. Ich mag es, Autolayout-Probleme zu lösen –

1

Anstelle von "filling" müssen die automatischen Layouteinschränkungen für führende und nachfolgende Leerstellen konstant 0 sein und sicherstellen, dass sie nicht relativ zu den Rändern sind.

1

Ihre Tabellenansicht Zelle Verbindung auswählen Inspektor und überprüfen Sie, ob Sienicht verbunden habeneditingAccessoryView versehentlich

enter image description here

Verwandte Themen