Ajouter le texte de l'image et de la légende à trois20 section de table à l'aide de tteseseddatasource

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

Question

J'essaye de créer un tableau en utilisant TTTableViewController. Je veux afficher une image dans l'en-tête de la section avec un texte de légende, quelque chose de similaire à ce que fait Instagram et de nombreuses autres applications. J'ai essayé d'utiliser l'échantillon de TTNavigatorDemo Pour afficher les données de TTSectionedDatasource, (Je ne sais pas si c'est la bonne façon de le faire, veuillez suggérer une meilleure façon si vous en savez). Il contient le nom / les en-têtes de la section comme des chaînes et des données régulières que TTTableViewItem. J'ai essayé de mettre en œuvre <UITableViewDelegate> protocole et réalisé en utilisant viewForHeaderInSection Méthode, maintenant les données sont séparées de la section, y a-t-il un meilleur moyen d'utiliser Trois20 à travers lequel je peux transmettre ma vue en tête / section et TableItemView dans une source de données car cela me permettrait d'implémenter TTTableViewDragRefreshDelegate, que je n'ai pas pu implémenter lors de la mise en œuvre du <UITableViewDelegate> protocole dans ma classe.

Ma déclaration de classe en ce moment, ressemble à quelque chose comme

@interface ImageTable : TTTableViewController <UITableViewDelegate> { }

Je voudrais montrer des en-têtes de section avec une image et un texte comme:

Instagram:

J'utilise actuellement le TTNavigatorCode Pour remplir les données de mon tableau qui est:

   self.dataSource = [TTSectionedDataSource dataSourceWithObjects:
                               @"Food"
                               [TTTableViewItem itemWithText:@"Porridge" URL:@"tt://food/porridge"],
                               [TTTableTextItem itemWithText:@"Bacon & Eggs" URL:@"tt://food/baconeggs"],
                               [TTTableTextItem itemWithText:@"French Toast" URL:@"tt://food/frenchtoast"],
                               @"Drinks",
                               [TTTableTextItem itemWithText:@"Coffee" URL:@"tt://food/coffee"],
                               [TTTableTextItem itemWithText:@"Orange Juice" URL:@"tt://food/oj"],
                               @"Other",
                               [TTTableTextItem itemWithText:@"Just Desserts" URL:@"tt://menu/4"],
                               [TTTableTextItem itemWithText:@"Complaints" URL:@"tt://about/complaints"],
                               @"Other",
                               [TTTableTextItem itemWithText:@"Just Desserts" URL:@"tt://menu/4"],
                               [TTTableTextItem itemWithText:@"Complaints" URL:@"tt://about/complaints"],
                               nil];

J'ai pu faire quelque chose de similaire en implémentant la méthode:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
  return myCustomView;    
}

Mais comme mes données proviennent de la classe de modèle et que je veux mes vues générer et les ajouter à DataSource de manière formatée. Je voudrais savoir s'il existe un moyen d'utiliser trois20 à travers lequel je spécifie un tableau de mes données pour les sections et un autre tableau pour les données correspondantes sous les sections?

Votre aide est grandement appréciée

Merci

Était-ce utile?

La solution

Créer le délégué FootableDelegate.h

@interface FOOTableDelegate : TTTableViewDragRefreshDelegate 
{

}

- (UIView*) createHeaderView:(FOODataSource *)fDataSource forSectionID:(NSString *)secID;

@end

Dans le fichier FootabledElegate.m

- (UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
 {
    if (tableView.style == UITableViewStylePlain) 
        {
        if ([tableView.dataSource respondsToSelector:@selector(tableView:titleForHeaderInSection:)]) 
                {
            NSString* title = [tableView.dataSource tableView:tableView titleForHeaderInSection:section];
            if (title.length > 0) 
                        {
                UIView* header = [_headers objectForKey:title];

                if (nil != header)
                                {
                    header.alpha = 1;

                } 
                                else 
                                {
                    if (nil == _headers) 
                                        {
                        _headers = [[NSMutableDictionary alloc] init];
                    }

                    header = [self createHeaderView:tableView.dataSource forSectionID:title];
                    [_headers setObject:header forKey:title];
                }
                return header;
            }
        }
    }
    return nil;
}

- (UIView*) createHeaderView:(FeedDataSource *)fDataSource forSectionID:(NSString *)secID
{

     //do some code for header View

    return View;

}

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    //return height for the Section Header
    return height;
}

Cela vous aidera à résoudre votre problème

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top