2012-11-15 9 views
7

Ho creato una classe speciale di UIView che ha determinate proprietà e l'ho fatto a livello di programmazione perché di solito è vuota ma a volte contiene altre viste. So che se creo un UIView a livello di codice posso fare qualcosa come [specialView addSubview: aView];Aggiungere una visualizzazione dello storyboard come sottoview di una vista creata in modo programmatico

Il mio problema è che c'è un UIView che ho creato nello storyboard e devo aggiungere quell'IView come sottomenu sulla mia vista speciale. L'ho collegato come una proprietà nel mio ViewController ma quando faccio lo stesso codice come sopra, non succede nulla. Pensieri?

risposta

9
MyViewController *myViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MyScene"]; 
[specialView addSubview:myViewController.theViewToAdd]; 

E non dimenticare di fornire un identificatore di questo tipo alla vista (controller di visualizzazione) in Interface Builder.

0

Quel controllore UIView che ospita la vista desiderata non può essere istanziato. Quindi dovresti istanziare quel controller e afferrare la vista da lì.

2

Un'altra soluzione è che è possibile aggiungere il viewcontroller come childviewcontroller.

func displayContentController(content: UIViewController) { 
    addChildViewController(content) 
    self.view.addSubview(content.view) 
    content.didMoveToParentViewController(self) 
} 

Per rimuovere:

func hideContentController(content: UIViewController) { 
    content.willMoveToParentViewController(nil) 
    content.view.removeFromSuperview() 
    content.removeFromParentViewController() 
} 
Problemi correlati