2010-03-18 7 views
1

J'ai un tas de UIViews que je fait et placé un programme tas de contenu sur (UIButtons, UILabels, UINavigationBars, etc.), et la plupart de ces points de vue vont devoir réellement être UIScrollViews à la place.Convert UIViews fait par programme pour UIScrollViews

Maintenant, gardez à l'esprit que j'ai fait tout cela par le biais du code pas l'Interface Builder. Ce que j'ai d'abord essayé était de simplement changer chaque déclaration d'un UIView à un UIScrollView à la place, et qui a compilé et s'est bien passé, cependant, ils n'étaient pas défilables. C'est vraiment bizarre.

Voici le code que je passe en UIScrollViews, bien qu'il ne défile pas:

- (void)loadView { 

    //allocate the view 
    self.view = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; 
    //self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; 

    //set the view's background color 
    self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"MainBG.jpg"]]; 

    [self.view addSubview:[SiteOneController myNavBar1:@"Sites"]]; 

    NSMutableArray *sites = [[NSMutableArray alloc] init]; 

    NSString *one = @"Constution Center"; 
    NSString *two = @"Franklin Court"; 
    NSString *three = @"Presidents House"; 

    [sites addObject: one]; 
    [one release]; 

    [sites addObject: two]; 
    [two release]; 

    [sites addObject: three]; 
    [three release]; 

    NSString *element; 
    int j = 0; 
    for (element in sites) 
    { 
     UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
     UIFont *myBoldFont = [UIFont boldSystemFontOfSize:20.0]; 
     UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20, b + (j*45), c, d)]; 
     [label setBackgroundColor:[UIColor clearColor]]; 

     label.text = element; 
     label.font = myBoldFont; 

     UIImage *img = [UIImage imageNamed:@"ButtonBase.png"]; 
     [button setImage:img forState:UIControlStateNormal]; 

     //setframe (where on screen) 
     //separation is 15px past the width (45-30) 
     button.frame = CGRectMake(a, b + (j*45), c, d); 

     // [button setTitle:element forState:UIControlStateNormal]; 

     button.backgroundColor = [SiteOneController myColor1]; 

     [button addTarget:self action:@selector(showCCView:) 
     forControlEvents:UIControlEventTouchUpInside]; 
     [button setTag:j]; 

     [self.view addSubview: button]; 
     [self.view addSubview:label]; 
     j++; 

    } 

} 

Qu'est-ce que je fais mal?

Répondre

2

Essayez de définir une taille de contenu pour UIScrollView.

ie. scrollView.contentSize = CGSizeMake(320,760);

+0

Impressionnant. Merci beaucoup. Je vais prendre note de cela. – Scott

+0

Encore une question cependant. J'ai probablement fait une erreur dans ma question initiale. Cela transforme l'ensemble UIView en un UIScrollView. Ce qui signifie maintenant, quand je fais défiler même la barre de navigation défile avec elle ... Comment faites-vous juste le UIScrollView prennent seulement l'espace au-dessus de la barre d'onglets mais au-dessous de la barre de navigation. – Scott

+0

En supposant que 'SiteOneController' est un UINavigationBarController, vous voudrez peut-être changer votre code afin que vous ajoutiez UIScrollView dans SiteOneController, cela devrait résoudre votre problème. –