Je souhaite écrire une application me permettant d'avoir 5 pages sur lesquelles je peux scroller comme bon me semble à l'aide d'un controle de page.

Mon code est le suivant :

Le ViewController.h :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
#import <UIKit/UIKit.h>
 
@interface ViewController : UIViewController <UIScrollViewDelegate> {
    ...
}
@property (weak, nonatomic) IBOutlet UIScrollView *sv;
@property (weak, nonatomic) IBOutlet UIPageControl *laPage;
- (IBAction)changePage:(id)sender;
 
@end
Le ViewController.m est le suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#import "ViewController.h"
 
@interface ViewController ()
 
@end
 
@implementation ViewController
 
 
- (void)scrollViewDidScroll:(UIScrollView *)sender {
    //stockage à gauche de la largeur de la page
    CGFloat largeurPage = _sv.frame.size.width;
    //calcul du numéro de page à afficher
    int page = floor((_sv.contentOffset.x - largeurPage / 2) / largeurPage) + 1;
    //mettre à jour la valeur calculée pour pouvoir l'afficher
    _laPage.currentPage = page;
}
 
- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
 
    //définition d'un objet couleur qu'on initialise avec 5 couleurs
    NSArray *couleurs = [NSArray arrayWithObjects:[UIColor redColor],[UIColor greenColor], [UIColor blueColor], [UIColor cyanColor],[UIColor yellowColor],nil];
 
    for (int i = 0; i < couleurs.count; i++)
    {
        // Définition d'un rectangle
        CGRect rectangle;
 
        // Définition de l'origine et la taille d'un rectangle
 
        //abscisse
        rectangle.origin.x = _sv.frame.size.width * i;
 
        //ordonnee
        rectangle.origin.y = 0;
 
        //Le rectangle a la même dimension que le UIScrollView
        rectangle.size = _sv.frame.size;
 
        // Ajout de la vue correspondante
        UIView *subview = [[UIView alloc] initWithFrame:rectangle];
 
        //initialisation de l'objet avec la couleur (i)
        subview.backgroundColor = [couleurs objectAtIndex:i];
 
        //définition de la sous vue avec l'objet subview
        [_sv addSubview:subview];
    }
    _sv.contentSize = CGSizeMake(_sv.frame.size.width * couleurs.count, _sv.frame.size.height);
}
 
 
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
 
- (IBAction)changePage:(id)sender {
    //définition de la variable frame de type CGRect
    CGRect frame;
    //définition du décalage en abscisse de l'affichage
    frame.origin.x = _sv.frame.size.width * _laPage.currentPage;
    //l'ordonnée de la page tjr à 0
    frame.origin.y = 0;
    //mise à jour de la propriété size du rectangle avec les composantes calculées plus haut
    frame.size = _sv.frame.size;
    //mise à jour de l'affichage en définissant le rectangle visible avec une animation
    [_sv scrollRectToVisible:frame animated:YES];
}
@end
Cependant lorsque je lance le run il m'affiche un écran blanc dans le simulateur. Le problème se situerait dans le ViewController.h mais je ne sais quoi mettre entre les accolades de :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
@interface ViewController : UIViewController <UIScrollViewDelegate> {
    ...
}