Wenn das leere Feld kommt, hat die Zeile in der gruppierten Tabellenansicht im iPhone entfernt?

StackOverflow https://stackoverflow.com/questions/4793198

  •  24-10-2019
  •  | 
  •  

Frage

Ich habe die Daten in gruppierter Tabellenansicht angezeigt. Die Daten werden in der Tabellenansicht von XML Parsing angezeigt. Ich habe 2 Abschnitt der Tabellenansicht, der Abschnitt 1 hat drei Zeilen und Abschnitt zwei zwei Zeilen.

  section 1 ->  3 Rows

  section 2 - > 2 Rows.

Jetzt möchte ich überprüfen, ob jemand der Saite leer ist, dann sollte ich die leeren Zellen entfernen, also habe ich einige Probleme, wenn ich eine leere Zelle entfernt habe, dann wird die Indexnummer geändert. Wie kann ich also überprüfen, dass jemand des Feldes leer ist? Senden Sie mir bitte einen Beispielcode oder einen Link dafür? Wie kann ich das erreichen?

Beispielcode,

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section       
 {

 if (section == 0) {

    if([userEmail isEqualToString:@" "] || [phoneNumber isEqualToString:@" "] || [firstName isEqualToString:@" "])
    {
        return 2;

    } 

    else {

        return 3;

    }
}
if (section == 1) {

       if(![gradYear isEqualToString:@" "] || ![graduate isEqualToString:@" "]) {

    return 1;
}
    else
   {
        return 2;
     }


return 0;

}

Bitte hilf mir!!!

Vielen Dank.

War es hilfreich?

Lösung

Nach meinem Verständnis möchten Sie die Zeile nicht hinzufügen, in der Daten leer sind. Daher empfehle ich, dass Sie die Abschnitte Daten verfolgen sollten, bevor Sie der Tabellenansicht über die Abschnitte und Zeilen mitgeteilt werden.

Der Code kann also Ihnen helfen, Ihnen zu helfen.

- (void) prepareSectionData {
 NSString *userEmail = @"";
 NSString *phoneNumber = @"";
 NSString *firstName = @"";

 NSString *gradYear = @"";
 NSString *graduate = @"";

 sectionOneArray = [[NSMutableArray alloc] init];
 [self isEmpty:userEmail]?:[sectionOneArray addObject:userEmail];
 [self isEmpty:phoneNumber]?:[sectionOneArray addObject:phoneNumber];
 [self isEmpty:firstName]?:[sectionOneArray addObject:firstName];

 sectionTwoArray = [[NSMutableArray alloc] init];
 [self isEmpty:gradYear]?:[sectionTwoArray addObject:gradYear];
 [self isEmpty:graduate]?:[sectionTwoArray addObject:graduate];
}

 -(BOOL) isEmpty :(NSString*)str{
 if(str == nil || [[str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length] == 0)
     return YES;
 return NO;
 }

  // Customize the number of sections in the table view.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 2;
}

// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if(section == 0){
    return [sectionOneArray count];
} else if (section == 1) {
    return [sectionTwoArray count];
}
return 0;
}


// Customize the appearance of table view cells.

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



static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}

// Configure the cell.
if(indexPath.section == 0){
    cell.textLabel.text = [sectionOneArray objectAtIndex:indexPath.row];
} else if (indexPath.section == 1) {
    cell.textLabel.text = [sectionTwoArray objectAtIndex:indexPath.row];
}
return cell;
}

Andere Tipps

@Pugal Devan, nun, Sie können die Daten in einem Array behalten, aber das Problem ist in diesem Fall, Sie müssen sich um Arraygrenzen und korrekte Indizes für verschiedene Abschnitte kümmern. Für jeden Abschnitt IndexPath.row startet der Index 0, und wenn sich Ihre Daten in einem einzelnen Array befinden, müssen Sie den Zeilenindex selbst verwalten. Aber wenn Sie es behalten möchten, können Sie es mögen:

int sectionOneIndex = 0; 
int sectionTwoIndex = 3;
NSMutableArray *sectionArray = [[NSMutableArray alloc] initWithObjects:@"email", @"Name", @"address", @"zipCode", @"country", nil];

Über zwei Ganzzahlen stellt die Ausgangsposition der Elemente Ihrer verschiedenen Abschnitte dar. Die ersten 3 Objekte aus dem Abschnittsarray sind Teil des ersten Abschnitts, und die letzten beiden Objekte sind Teil von Abschnitt 2. Jetzt müssen Sie die korrekte Zeilenzahl zurückgeben. Dafür können Sie schreiben:

if(section == 0) return [sectionArray count] - (sectionTwoIndex-1); //returns 3
else if(section == 1) return [sectionArray count] - sectionTwoIndex; //returns 2

Oder wenn Ihre Zählung statisch ist, können Sie im Gegenzug konstante Werte einsetzen.

Und zum Zeitpunkt, an dem Sie aus dem Array lesen, werden Sie diesen Index einfach im Zeilenwert hinzufügen, wodurch die richtige Position Ihres Elements für die aktuelle Zelle zurückgegeben wird.

// Customize the appearance of table view cells.

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

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

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

// Configure the cell.
if(indexPath.section == 0){
cell.textLabel.text = [sectionArray objectAtIndex:indexPath.row + sectionOneIndex];
} else if (indexPath.section == 1) {
cell.textLabel.text = [sectionArray objectAtIndex:indexPath.row + sectionTwoIndex];
}
return cell;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top