2016-05-21 8 views
1

Also, ich habe eine App, die als Root-View-Controller eine Menüleiste Controller-Klasse, die ich MenuTabBarController genannt, und die eine Anzahl von UIViewControllers enthält. Einer dieser View-Controller ist die Homepage, die ich HomeViewController genannt habe und die beim Laden der App angezeigt wird, da sie den Index 0 belegt. Was ich versuche, ist eine Unteransicht in der viewDidLoad Methode von MenuTabBarController zu erstellen, aber diese Unteransicht innerhalb HomeViewController platzieren. Hier ist, was ich kam mitWie füge ich einen UIView zu einem UIViewController von der Menü Tableiste Controller mit swift?

let homeViewController = HomeViewController()//An instance of HomeViewController created at global level 

    class MenuTabBarController: UITabBarController,UITabBarControllerDelegate,UIPopoverPresentationControllerDelegate{ 

     var mainBox: UIView!//This is the sub view reference declared as an optional 

     override func viewDidLoad() 

      super.viewDidLoad() 

      self.delegate = self 


      mainBox = UIView(frame: CGRectMake(0,0,200,200))//Initialize mainBox 

      homeViewController.view.addSubview(mainBox)//Attempt to add mainBox to homeViewController 

     }//End viewDidLoad 

    }//End class definition 

Nun, die mainBox nicht hinzugefügt werden kann, da, wenn ich versuche, die App zu laufen, eine leere Seite starrt mich an. Wenn ich die mainBox der Ansicht der Menüleiste wie folgt hinzufüge:

self.view.addSubview(mainBox) 

es wird hinzugefügt. Wie kann ich es jedoch zum HomeView hinzufügen?

Antwort

0

Sie können dies auch tun, indem Sie auf den Tab-Index zugreifen, indem Sie alle Controller des Tab-Bar-Controllers erhalten.

(self.viewControllers[0] as! HomeViewController).view.addSubview(mainBox) 

Hoffe, es wird für Sie arbeiten !!!

+0

JAGAT danke das hat funktioniert. Ich musste den Code jedoch aus viewDidLoad() in viewDidAppear() verschieben –

0

Sie können Unteransicht zu Tab-Controller nicht hinzufügen, da es alle Registerkarten verwaltet, es ist nicht als VC für Benutzer sichtbar. Also, wenn Sie Ass in jedem Tac (VC) sehen möchten, dann können Sie es in seiner viewdidload Methode hinzufügen oder Wenn Sie Ansicht von tabbarcntoller Klasse hinzufügen möchten, dann können Sie alle View-Controller in Array durch Aufruf viewControllers von 10. self.viewControllers[0] ist Ihre erste VC (Home in Ihrem Fall), wo self.viewControllers[1] sollte Sekunde sein.

Hope this helfen :)

0

Es scheint, dass Sie eine zusätzliche Instanz der Heim-View-Controller erstellen (das ist nie btw sichtbar gemacht.) Und die Unteransicht in hinzufügen.

Ich denke, was Sie wirklich tun möchten, ist das Erstellen und Hinzufügen der Unteransicht in ViewDidLoad Ihrer HomeViewController Klasse.

Verwandte Themen