Définissez UITableView Delegate et DataSource
C'est mon problème:
J'ai ce petit UITableView
dans mon storyboard:
Et c'est mon code:
SmallTableViewController.h
#import <UIKit/UIKit.h>
#import "SmallTable.h"
@interface SmallViewController : UIViewController
@property (weak, nonatomic) IBOutlet UITableView *myTable;
@end
SmallTableViewController.m
#import "SmallViewController.h"
@interface SmallViewController ()
@end
@implementation SmallViewController
@synthesize myTable = _myTable;
- (void)viewDidLoad
{
SmallTable *myTableDelegate = [[SmallTable alloc] init];
[super viewDidLoad];
[self.myTable setDelegate:myTableDelegate];
[self.myTable setDataSource:myTableDelegate];
//Do any additional setup after loading the view, typically from a nib.
}
- (void)viewDidUnload
{
[super viewDidUnload];
//Release any retained subviews of the main view.
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
@end
Maintenant, comme vous pouvez le voir, je veux donner un exemple appelé myTableDelegate en tant que Délégué et de la source de données de myTable.
C'est la Source de SmallTable classe.
SmallTable.h
#import <Foundation/Foundation.h>
@interface SmallTable : NSObject <UITableViewDelegate , UITableViewDataSource>
@end
SmallTable.m
@implementation SmallTable
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
//Return the number of sections.
return 0;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
//Return the number of rows in the section.
return 5;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
//Configure the cell...
cell.textLabel.text = @"Hello there!";
return cell;
}
#pragma mark - Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"Row pressed!!");
}
@end
J'ai mis en place tous les UITableViewDelegate
et UITableViewDataSource
méthode que l'application a besoin. Pourquoi il crash juste avant le point de vue apparaissent??
Merci!!
source d'informationauteur Marco Manzoni
Vous devez vous connecter pour publier un commentaire.
rickster est droit. Mais je suppose que vous devez utiliser une
strong
qualificatif pour votre propriété car, à la fin de votreviewDidLoad
méthode de l'objet sera libéré de toute façon.Mais est-il une raison pour utiliser un objet séparé (source de données et délégué) pour votre table? Pourquoi ne pas vous fixer
SmallViewController
comme la source et le délégué de votre table?En outre, vous ne sont pas de la création de la cellule dans le bon sens. Ces lignes ne rien faire:
dequeueReusableCellWithIdentifier
simplement extrait de la table "cache" une cellule qui a déjà créé et qui peuvent être réutilisés (ceci afin d'éviter la consommation de mémoire), mais vous n'avez pas créé de toute.Où faites-vous
alloc-init
? Faire ceci à la place:En outre, dire à
numberOfSectionsInTableView
de retour 1 au lieu de 0:Je présume que vous êtes à l'aide de l'ARC? Votre
myTableDelegate
n'est référencée dans une variable locale dansviewDidLoad
-- une fois que la méthode se termine, il est libéré. (Dans la délégué/source de données de modèle, les objets ne sont pas propriétaires de leurs délégués, de sorte que le tableau de la vue références de l'objet de votre sont faibles.) Je ne m'attends pas que seul causer un accident, mais c'est probablement la clé de votre problème.setDelegate
ne permet pas de conserver le délégué.Et
numberOfSectionsInTableView
méthode doit retourner 1 au lieu de 0;Nombre de sections doit être réglé au moins une
Le délégué d'une UITableView objet doit adopter le UITableViewDelegate protocole. En option méthodes du protocole de permettre au délégué à gérer les sélections de configurer la section en-têtes et pieds de page, aider à supprimer méthodes.