2012-12-27 7 views
8

Ho un UIViewController e voglio aggiungere un UIScrollView ad esso (abilitare il supporto per lo scorrimento), è possibile?Aggiunta di UIScrollView a un UIViewController

So che è possibile, se si dispone di un UIScrollView per aggiungere un UIViewController ad essa, ma mi interessa anche se contrario fosse vero, se io aggiungo un cann UIScrollView a un UIViewController esistente, in modo tale che ricevo funzione di scorrimento .

Modifica

penso di aver trovato una risposta: Adding a UIViewController to UIScrollView

+0

È possibile aggiungere UIScrollView alla vista di UIViewController ed è possibile visualizzare UIViewController su UIScrollView –

+0

Prima di fare qualcosa del genere, vorrei vedere cosa è un controller e cosa è una vista. Sono cose molto diverse. – Mert

+0

puoi aggiungere una scrollview a un controller di visualizzazione e visualizzare i controller in una scrollview, aggiungi la tua scrollview come sottodirectory alla tua attuale ViewController – Talha

risposta

20

Un UIViewController ha una proprietà view. Quindi, è possibile aggiungere un UIScrollView al suo view. In altre parole, è possibile aggiungere la vista di scorrimento alla gerarchia della vista.

Questo può essere ottenuto tramite codice o tramite XIB. Inoltre, è possibile registrare il controller di visualizzazione come delegato per la visualizzazione di scorrimento. In questo modo, è possibile implementare metodi per l'esecuzione di diverse funzionalità. Vedi protocollo UIScrollViewDelegate.

// create the scroll view, for example in viewDidLoad method 
// and add it as a subview for the controller view 

[self.view addSubview:yourScrollView]; 

Si potrebbe anche ignorare loadView metodo per UIViewController classe e di impostare la visualizzazione di scorrimento come la visualizzazione principale per il controller che si stanno prendendo in considerazione.

Modifica

ho creato un piccolo campione per voi. Qui, hai una vista di scorrimento come un bambino della vista di un UIViewController. La vista di scorrimento ha due viste come bambini: view1 (colore blu) e view2 (colore verde).

Qui, suppongo che è possibile scorrere in una sola direzione: orizzontale o verticale. Di seguito, se si scorre orizzontalmente, è possibile vedere che la vista di scorrimento funziona come previsto.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UIScrollView* scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)]; 
    scrollView.backgroundColor = [UIColor redColor]; 
    scrollView.scrollEnabled = YES; 
    scrollView.pagingEnabled = YES; 
    scrollView.showsVerticalScrollIndicator = YES; 
    scrollView.showsHorizontalScrollIndicator = YES; 
    scrollView.contentSize = CGSizeMake(self.view.bounds.size.width * 2, self.view.bounds.size.height);  
    [self.view addSubview:scrollView]; 

    float width = 50; 
    float height = 50; 
    float xPos = 10; 
    float yPos = 10; 

    UIView* view1 = [[UIView alloc] initWithFrame:CGRectMake(xPos, yPos, width, height)]; 
    view1.backgroundColor = [UIColor blueColor];  
    [scrollView addSubview:view1]; 

    UIView* view2 = [[UIView alloc] initWithFrame:CGRectMake(self.view.bounds.size.width + xPos, yPos, width, height)]; 
    view2.backgroundColor = [UIColor greenColor];  
    [scrollView addSubview:view2]; 
} 

Se è necessario scorrere solo verticalmente è possibile modificare nel modo seguente:

scrollView.contentSize = CGSizeMake(self.view.bounds.size.width, self.view.bounds.size.height * 2); 

Ovviamente, è necessario riorganizzare la posizione delle view1 e view2.

P.S. Qui sto usando ARC. Se non si utilizza ARC, è necessario esplicitamente release oggetti alloc-init.

+0

Ciao Ho pensato a questo, aggiungendo UIScrollView come sottomenu al mio ViewController, stavo solo dubitando che questo avrebbe permesso la "funzione di scorrimento" ... (sapete, dato che la aggiungevo come una "vista secondaria" ..) – user1903992

+0

@ user1903992 Certo, se la vista di scorrimento viene aggiunta come sottoview, sarà in cima a questo. Considera la gerarchia delle viste come una pila. La vista di scorrimento risponderà all'interazione dell'utente. –

+0

Quindi, ogni volta che aggiungi una vista * si siede * sopra di esso ??? hm ..... interessante ... non lo sapevo ... sembra davvero uno stack. – user1903992