2010-08-10 3 views
3

Honnêtement, je ne sais pas comment sous-classer un UITableView. Je suis très confus et cherche toute l'aide possible. Comment puis-je "sous-classer" un UITableView? La raison pour laquelle je dois le faire est parce que j'ai besoin que la table réponde aux touches de l'arrière-plan pour que les claviers puissent être cachés. J'ai essayé de googler mais je n'ai rien trouvé. Toute aide est extrêmement appréciée!Comment sous-classer UITableView?

Répondre

10

La plupart du temps, vous ne devriez pas avoir besoin de sous-classe UITableView, alors voyez si vous pouvez éviter de le faire en premier. Si vous absolument devez, créer une sous-classe qui hérite de UITableView et remplacer les méthodes liées au toucher dans la mise en œuvre:

// MyTableView.h 

@interface MyTableView : UITableView { 
} 

@end 

// MyTableView.m 

@implementation MyTableView 

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    [super touchesBegan:touches withEvent:event]; 
} 

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
    [super touchesMoved:touches withEvent:event]; 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    [super touchesEnded:touches withEvent:event]; 
} 

- (void)touchesCancelled:(NSSet*)touches withEvent:(UIEvent*)event { 
    [super touchesCancelled:touches withEvent:event]; 
} 

@end 
+0

Une chose à ajouter: Ne pas oublier de implémentez 'UITableViewDelegate' et' UITableViewDataSource' si nécessaire – Raptor

+1

Je pense qu'il est utile d'expliquer pourquoi vous ne devriez pas avoir besoin de sous-classer UITableView. La raison en est que vous pouvez accomplir beaucoup de personnalisation en passant des cellules personnalisées à une instance UITableView standard (via cellForRowAtIndexPath). En d'autres termes, votre contrôleur agit en tant que source de données pour votre table, et lorsque la table est en cours de configuration, elle demandera des cellules à votre contrôleur. C'est ce que tentent les tutoriels standards. – kris

-4

Dans votre fichier .h déclarerons comme sous-classe:

@interface myViewController: UITableViewController 

mettre en œuvre ensuite les méthodes déléguées UITableViewController:

http://developer.apple.com/iphone/library/documentation/uikit/reference/UITableViewDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intf/UITableViewDelegate

Pour détecter des touches sur une cellule écrire votre logique dans le tableView:didSelectRowAtIndexPath: méthode: http://developer.apple.com/iphone/library/documentation/uikit/reference/UITableViewDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UITableViewDelegate/tableView:didSelectRowAtIndexPath:

+3

La question portait sur UITableView pas UITableViewController – thrusty