Lorsque vient champ vide, supprimé la ligne de la vue Tableau iPhone en Groupés?

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

  •  24-10-2019
  •  | 
  •  

Question

J'ai affiché les données en vue de table groupée. Les données de ce sont affichées dans l'affichage du tableau de parsing XML. I have 2 section de la vue de la table, la première section comporte trois lignes et la deuxième section comporte deux rangées.

  section 1 ->  3 Rows

  section 2 - > 2 Rows.

Maintenant, je veux vérifier, si quelqu'un de la chaîne est vide alors je dois retirer les cellules vides, donc je l'ai fait face à des problèmes, si je l'ai retiré une cellule vide, alors il sera changé le numéro d'index. Alors, comment puis-je vérifier, tout le monde du champ est vide ?, Parce que quelques fois plus nombre de champ vide viendra, de sorte que la position d'index sera le changement. Alors, s'il vous plaît envoyez-moi un code d'échantillon ou d'un lien pour cela? Comment puis-je y parvenir?

Exemple de code,

 - (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;

}

S'il vous plaît aidez-moi !!!

Merci.

Était-ce utile?

La solution

Comme par ma compréhension, vous ne voulez pas ajouter la ligne où les données sont vides, alors suggérez malade, vous devez perpare les données sections avant de dire à la vue du tableau sur les sections et les lignes.

Alors, peut-être le code suivant peut vous aider ..., je l'ai testé que vous avez juste besoin d'appeler la méthode « prepareSectionData » de méthode « viewDidLoad » et définir les tableaux de section dans le fichier .h.

- (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;
}

Autres conseils

@Pugal Devan, Eh bien, vous pouvez conserver les données dans un tableau, mais le problème dans ce cas est, vous devez prendre soin des limites du tableau et les index corrects pour différentes sections. Pour chaque section indexPath.row commence à partir de l'index 0, et si vos données sont dans le tableau unique, vous devez gérer l'index de la ligne par votre auto. Mais encore, si vous voulez le garder, vous pouvez faire comme:

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

Au-dessus deux entiers représente la position de départ des éléments de vos différentes sections. Les 3 premiers objets de la section tableau sont la partie de la première section, et les deux derniers objets sont la partie de la section deux. Maintenant, vous devez retourner le nombre de lignes correct. Pour cela, vous pouvez écrire:

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

OU si votre compte est statique, vous pouvez mettre des valeurs constantes en retour.

Et au moment où vous lirez de tableau, vous suffit d'ajouter cet indice en valeur de la ligne, qui retournera la position correcte de votre élément pour la cellule actuelle.

// 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;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top