Ajouter un enfant-vue-contrôleur swift

J'essaie d'ajouter un enfant-vue-contrôleur à un containerViewController

Enfant :

AViewController
BViewController
CViewController

Je n'ai aucune erreur mais quand je lance l'application, je peux faire glisser l'écran, il y a 3 section balayée, mais de la A,B,C voir les contrôleurs ne pas apparu..

C'est mon code, une idée ?

import UIKit
class ContainerViewController: UIViewController {
@IBOutlet var scrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
//Do any additional setup after loading the view, typically from a nib.

//creat VC

var Avc : AViewController = AViewController ()
var Bvc : BViewController = BViewController ()
var Cvc : CViewController = CViewController ()
//add it to the view hierarchie

self.addChildViewController(Cvc)
self.scrollView.addSubview(Cvc.view)
Cvc.didMoveToParentViewController(self)
self.addChildViewController(Bvc)
self.scrollView.addSubview(Bvc.view)
Bvc.didMoveToParentViewController(self)
self.addChildViewController(Avc)
self.scrollView.addSubview(Avc.view)
Avc.didMoveToParentViewController(self)
//set the frame

var adminFrame : CGRect = Avc.view.frame
adminFrame.origin.x = adminFrame.width
Bvc.view.frame = adminFrame
var BFrame : CGRect = Bvc.view.frame
BFrame.origin.x = 2*BFrame.width
Cvc.view.frame = BFrame
//set the frame of the scrollview

var scrollWidth: CGFloat = 3*self.view.frame.width
var scrollHeight: CGFloat = self.view.frame.size.height
self.scrollView.contentSize = CGSizeMake(scrollWidth, scrollHeight)
}

Edit:

À la recherche à la vue de la hiérarchie, il rapporte ce qui suit:

<UIWindow: 0x7ff3fad19f70; frame = (0 0; 320 568); gestureRecognizers = <NSArray: 0x7ff3fac3efe0>; layer = <UIWindowLayer: 0x7ff3fad19740>>
| <UIView: 0x7ff3fb108b90; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0x7ff3fb108e60>>
|    | <UIScrollView: 0x7ff3fac3acf0; frame = (0 0; 320 568); clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x7ff3fb107320>; layer = <CALayer: 0x7ff3fac18e00>; contentOffset: {0, 0}; contentSize: {960, 568}>
|    |    | <UIView: 0x7ff3fac41ed0; frame = (640 0; 320 568); autoresize = W+H; layer = <CALayer: 0x7ff3fac28a00>>
|    |    | <UIView: 0x7ff3fac42320; frame = (320 0; 320 568); autoresize = W+H; layer = <CALayer: 0x7ff3fac38e10>>
|    |    | <UIView: 0x7ff3fac42730; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0x7ff3fac42810>>
|    |    | <UIImageView: 0x7ff3faf020f0; frame = (0 564.5; 320 3.5); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO; layer = <CALayer: 0x7ff3fae0df80>>
|    |    | <UIImageView: 0x7ff3fac1c660; frame = (316.5 0; 3.5 568); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; layer = <CALayer: 0x7ff3fac39420>>
|    | <_UILayoutGuide: 0x7ff3fb108ec0; frame = (0 0; 0 20); hidden = YES; layer = <CALayer: 0x7ff3fb1091e0>>
|    | <_UILayoutGuide: 0x7ff3fb109c20; frame = (0 568; 0 0); hidden = YES; layer = <CALayer: 0x7ff3fb109d00>>
  • Vous pourriez vouloir mettre en pause l'application et à la (lldb) invite de commandes, entrez po [[UIWindow keyWindow] recursiveDescription], qui va vous montrer les images de tous les points de vue. Il me semble que vous n'avez jamais mis Avc.view.frame, de sorte que je parie que son CGRectZero. Je vous suggère de Avc.view.frame = self.view.bounds avant de démarrer le cadre de Bvc et Cvc.
  • Je pense que la seule image de la sorcière est dysplayed est la scrollView cadre de mon conteneur, j'ai essayé votre solution mais ça ne fonctionne pas.
  • L' (lldb) po [[UIWindow keyWindow] recursiveDescription] <UIWindow: 0x7ffbd9454b20; frame = (0 0; 320 568); gestureRecognizers = <NSArray: 0x7ffbd94553d0>; couche = <UIWindowLayer: 0x7ffbd9451c00>> | <UIView: 0x7ffbd9718e60; frame = (0 0; 320 568); autoresize = W+H; couche = <CALayer: 0x7ffbd9719130>> | | <UIScrollView: 0x7ffbd970fdd0; frame = (0 0; 320 568);
  • Génial! Si votre sous-vues sont là! Mais vous n'avez pas apparemment ajouté quelque chose à ceux des sous-vues, donc il n'y a rien à voir.
  • J'ai juste changé la couleur de l'arrière-plan pour chacun d'entre eux afin d'identifier les différents sous-vues, mais je ne peux pas voir la couleur différente quand swipping, tout est blanc. J'ai aussi ajouter une étiquette...
  • En fait je m en essayant de faire de cette github.com/lbrendanl/SwiftSwipeView ce tuto medium.com/swift-programming/...
  • Avez-vous d'ajouter l'étiquette et de changer la couleur par programme ou dans interface builder. Dans ce dernier cas, vous devez instancier les trois enfants de vues à partir de la table de montage séquentiel, comme indiqué dans ma réponse révisée. Si vous êtes à le faire par programmation, de mise à jour de votre question avec le code que vous avez utilisé. Et, comme toujours, de répéter que recursiveDescription, de sorte que vous pouvez distinguer entre l'étiquette n'étant pas là vs avoir une frame qui le rend impossible à voir (chercher le zéro de la largeur ou de la hauteur).

InformationsquelleAutor jmcastel | 2014-08-20