2016-11-11 4 views
1

Ich versuche, eine Tabelle zu erstellen, die in jeder Zeile einige Uilabels enthält. Die Nummer des Uilabels basiert auf meinem Array. Wenn mein Array einen String hat, dann wäre es nur ein Label. Wenn mein Array 2 Strings hat, dann hat die Zeile zwei Labels.Objective c verschiedene uilabel in einer Zeile einer Tabellenzelle

Erste Reihe:

enter image description here

Zweite Reihe:

enter image description here

Hier ist mein Code in die Saiten in die UILabels zu setzen, die bereits vorhanden sind. Wie mache ich die Zelle automatisch sememore Uilabels generieren, wenn ich mehr Zeichenfolgen habe?

- (void)updateCell:(NSString *)text1 label2:(NSString *)text2 label3:(NSString *)text3{ 
    self.testLabel1.text = text1; 
    self.testLabel2.text = text2; 
    self.testLabel3.text = text3; 
} 

- (void)createLabel{ 
    //create uilabels based on the size of array? 
} 

Wenn dies nicht praktikabel ist, was könnten alternative Wege sein? Jeder Rat wird sehr geschätzt.

Antwort

1

Das alles in cellForRowAtIndexPath getan werden sollte, sollten Sie grundsätzlich Ihre Array verwenden für diese Zeile Index und erstellen dann die UILabels programmatisch, hier ist ein Code, wird es nicht funktionieren, aber die Logik sollte in Ordnung

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

NSArray *stringLabels = [self.labels objectAtIndex:indexPath.row]; // im not sure how you are getting the array 

    for (NSString *str in stringLabels) { 
     UILabel *newLabel = [[UILabel alloc]init]; 
     newlabel.SetFrame = CGrectMake(Set to your desired layout); 
     newlabel.text = str; 
     // uilabel formatting 

     [cell addSubview:newLabel] 
    } 

} 

Dieses sein Ansatz ist sehr flexibel, da Sie eine beliebige Anzahl von Etiketten in jeder Zelle haben können.

+1

Dank Ihrer Lösung führt mich auf den richtigen Weg. ;) – bubibu

0

Versuchen Sie, diese

Sie benötigen unterschiedliche Zelle erstellen, wie Ihr Zustand und konfigurieren CellForAtIndexPath wie folgt:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    NSString *strFirstIndentifier = @"FirstIndentifier"; // set this idenfier to UITableViewCell in StroryBoard for all 
    NSString *strSecondIndentifier = @"SecondIndentifier"; 
    NSString *strThirdIndentifier = @"ThirdIndentifier"; 
    UITableViewCell *adjustcell ; 
    if (arrUnits.count == 1) { 
     adjustcell = [tableView dequeueReusableCellWithIdentifier:strFirstIndentifier]; 
     //configure your lables here 
    } 
    else if (arrUnits.count == 2) { 
     adjustcell = [tableView dequeueReusableCellWithIdentifier:strSecondIndentifier]; 
     //configure your lables here 
    } 
    else if (arrUnits.count == 3) { 
     adjustcell = [tableView dequeueReusableCellWithIdentifier:strThirdIndentifier]; 
     //configure your lables here 
    } 

    return adjustcell; 
} 
0

Ich würde empfehlen, eine UICollectionView mit der Datenquelle UICollectionView ein Array zu verwenden, das die Anzahl der Zeichenfolgen in dieser bestimmten Zeile enthält. Jede Zelle der UICollectionView enthält ein Label. Ich persönlich finde diesen Weg leichter zu verwalten.

Verwandte Themen