2010-07-14 4 views

Répondre

0

Insérez un NSTimer et déclenchez-le toutes les 300 secondes pour rafraîchir la vue du tableau?

2

créer un NSTimer qui appelle toutes les 5 minutes (en quelques secondes) 'foo' une méthode, puis dans 'foo' écrire juste

[self.tableView reloadData]; 
+0

Je pense [NSTimer timerWithTimeInterval: 300 cible: auto-sélecteur: @selector (foo) userInfo: nil répète: YES]; devrait le faire. – jmont

+0

où dois-je placer cette ligne? viewDidLoad? – Yolanda

+0

En utilisant timerWithTimerInterval ... vous devez également ajouter le temporisateur à une boucle d'exécution. – Vegar

4

Commander NSTimer et UITableViews reloadData.

Si l'on suppose que la vue du régulateur de courant est un UITableView, et que vous avez déclaré une minuterie appelé NSTimer dans votre contrôleur, le code suivant devrait faire l'affaire:

- (void)viewDidLoad { 
    timer = [NSTimer scheduledTimerWithTimeInterval:300.0 
              target:[self view] 
              selector:@selector(reloadData) 
              userInfo:nil 
              repeats:YES]; 

    [super viewDidLoad]; 
} 

MISE À JOUR:

Quelqu'un d'autre a proposé l'utilisation timerWithTimeInterval: target: selector: userInfo: répète: qui est fondamentalement le même que le scheduledTimerWithTimeInterval que j'ai utilisé dans mon exemple. Ils diffèrent, cependant, en ce que scheduledTimerWithTimeInterval ajoute le temporisateur à la boucle d'exécution en cours, tandis qu'avec la méthode timerWithTimerInterval, vous devrez ajouter le temporisateur à une boucle d'exécution de votre auto.

+2

Si le contrôleur de vue en cours est un 'UIViewController', vous devrez utiliser' self.tableView'. ('self.view' fonctionnera probablement, mais Apple dit' self.tableView' est 'UITableView') –

+0

tableView est une propriété de UITableViewController, pas UIViewController. La propriété de vue UIViewControllers reflète la vue que le contrôleur est censé contrôler, et dans ma petite application de test, c'est un UITableView. – Vegar

Questions connexes