2010-01-02 11 views

risposta

17

Ecco un esempio di come si può fare questo:

- (void)viewDidLoad 
{ 

    //standard UIScrollView is added 
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)]; 
    [self.view addSubview:scrollView]; 

    scrollView.pagingEnabled = YES; 
    scrollView.contentSize = CGSizeMake(320*2, 460); //this must be the appropriate size! 

    //required to keep your view controllers around 
    controllers = [[NSMutableArray alloc] initWithCapacity:0]; 

    //just adding two controllers 
    LabeledViewController *one = [[LabeledViewController alloc] initWithPosition:0 text:@"one"]; 

    [scrollView addSubview:one.view]; 
    [controllers addObject:one]; 

    LabeledViewController *two = [[LabeledViewController alloc] initWithPosition:1 text:@"two"]; 
    [scrollView addSubview:two.view]; 
    [controllers addObject:two]; 
} 

LabeledViewController è piuttosto semplice, ma è possibile aggiungere fino a come si vuole:

@implementation LabeledViewController 

- (id)initWithPosition:(NSInteger)position text:(NSString*)text 
{ 
    if (self = [super init]) { 
     myPosition = position; 
     myText = [text retain]; 
    } 
    return self; 
} 


- (void)viewDidLoad 
{ 
    //this will setup the position in the UIScrollView 
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(320*myPosition, 0, 320, 460)]; 
    self.view = view; 

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 320, 50)]; 
    label.text = myText; 

    [self.view addSubview:label]; 
} 
+0

Sì, avete puoi sempre utilizzare il tuo view controller come vista attraverso la sua proprietà view. viewController.view o [viewController view]. –

+0

Grazie per il codice! una nota, non dovresti chiamare [super loadView] in loadView. Invece puoi creare una vista all'inizio UIView * myView = [[UIView alloc] init]; aggiungi la scrollView a myView e poi alla fine fai self.view = myView –

+1

Questo funziona. Tuttavia ho i pulsanti sulla mia vista e mi piacerebbe che il controller della vista secondaria rispondesse ai pulsanti. L'ho cablato correttamente, ma ricevo un errore come se il mio controller di visualizzazione non avesse i metodi di azione. – SpaceTrucker

Problemi correlati