Hallo zusammen,
ich bin gerade dabei den Seitenaufbau meiner App zu gestalten, doch bei einer Konstruktion schmiert mir die App ab.
Ich habe einen Tab Bar VC, welcher auf einen bestimmten VC (GuVInitVC) verweist. Dieser VC hat oben links ein Segmented Control mit 3 Buttons.
Diese drei Buttons verweisen jeweils auf einen VC (PaymentsInitVC, YieldInitVC, OtherInitVC), welcher wiederum ein Segmented Control, dieses mal oben rechts mit 2 Buttons hat.
Diese beiden Buttons verweisen auf je einen VC unterhalb der Inits.
Habe ich die Verbindungen falsch gesetzt oder warum geht das nicht?
Oder liegt es daran, daß man dieses System nicht verschachteln kann?
Mich wundert es auch, daß sich der Segmented Control auf der GuV Seite nicht an meine Programmierung anpasst und noch die Standarddarstellung aufweist. Liegt hier der Hund begraben?
Ein paar Screenshots des UI sind im Anhang, der Code am Ende der Nachricht.
Besten Dank für einen Lösungshinweis!
mac
P.s.: Wie ist es denn am sinnvollsten Code zur Diskussion zur Verfügung zu stellen? So wie geschehen in den Text kopieren?
Code des GuVInitVC:
Alles anzeigen
Code eines darunter liegenden VC:
Alles anzeigen
ich bin gerade dabei den Seitenaufbau meiner App zu gestalten, doch bei einer Konstruktion schmiert mir die App ab.
Ich habe einen Tab Bar VC, welcher auf einen bestimmten VC (GuVInitVC) verweist. Dieser VC hat oben links ein Segmented Control mit 3 Buttons.
Diese drei Buttons verweisen jeweils auf einen VC (PaymentsInitVC, YieldInitVC, OtherInitVC), welcher wiederum ein Segmented Control, dieses mal oben rechts mit 2 Buttons hat.
Diese beiden Buttons verweisen auf je einen VC unterhalb der Inits.
Habe ich die Verbindungen falsch gesetzt oder warum geht das nicht?
Oder liegt es daran, daß man dieses System nicht verschachteln kann?
Mich wundert es auch, daß sich der Segmented Control auf der GuV Seite nicht an meine Programmierung anpasst und noch die Standarddarstellung aufweist. Liegt hier der Hund begraben?
Ein paar Screenshots des UI sind im Anhang, der Code am Ende der Nachricht.
Besten Dank für einen Lösungshinweis!
mac
P.s.: Wie ist es denn am sinnvollsten Code zur Diskussion zur Verfügung zu stellen? So wie geschehen in den Text kopieren?
Code des GuVInitVC:
Quellcode
- //
- import UIKit
- class GuVInitVC: UIViewController {
- @IBOutlet var segmentedControl: UISegmentedControl!
- lazy var PaymentsInitVC: PaymentsInitVC = {
- let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
- var viewController = storyboard.instantiateViewController(withIdentifier: "PaymentsInitVC") as! PaymentsInitVC
- self.addViewControllerAsChildViewController(childViewController: viewController)
- return viewController
- }()
- lazy var YieldInitVC: YieldInitVC = {
- let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
- var viewController = storyboard.instantiateViewController(withIdentifier: "YieldInitVC") as! YieldInitVC
- self.addViewControllerAsChildViewController(childViewController: viewController)
- return viewController
- }()
- lazy var OtherInitVC: OtherInitVC = {
- let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
- var viewController = storyboard.instantiateViewController(withIdentifier: "OtherInitVC") as! OtherInitVC
- self.addViewControllerAsChildViewController(childViewController: viewController)
- return viewController
- }()
- override func viewDidLoad() {
- super.viewDidLoad()
- setupView()
- }
- //Mark: - View Methods
- private func setupView() {
- setupSegmentedControl()
- updateView()
- }
- private func updateView() {
- PaymentsInitVC.view.isHidden = segmentedControl.selectedSegmentIndex != 0
- YieldInitVC.view.isHidden = segmentedControl.selectedSegmentIndex != 1
- OtherInitVC.view.isHidden = segmentedControl.selectedSegmentIndex != 2
- }
- //Mark: -
- private func setupSegmentedControl() {
- segmentedControl.removeAllSegments()
- segmentedControl.insertSegment(withTitle: "Aufwände", at: 0, animated: false)
- segmentedControl.insertSegment(withTitle: "Erträge", at: 1, animated: false)
- segmentedControl.insertSegment(withTitle: "Andere A&E", at: 2, animated: false)
- segmentedControl.addTarget(self, action: #selector(selectionDidChange(sender:)), for: .valueChanged)
- segmentedControl.selectedSegmentIndex = 0
- }
- //Mark: - Actions
- @ObjC func selectionDidChange(sender: UISegmentedControl) {
- updateView()
- }
- //Mark: - Helper Methods
- private func addViewControllerAsChildViewController(childViewController: UIViewController){
- addChildViewController(childViewController)
- view.addSubview(childViewController.view)
- childViewController.view.frame = view.bounds
- childViewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
- childViewController.didMove(toParentViewController: self)
- }
- private func removeViewControllerAsChildViewCntroller(ChildViewController: UIViewController) {
- ChildViewController.willMove(toParentViewController: nil)
- ChildViewController.view.removeFromSuperview()
- ChildViewController.removeFromParentViewController()
- }
- }
Code eines darunter liegenden VC:
Quellcode
- //
- import UIKit
- class PaymentsInitVC: UIViewController {
- @IBOutlet var segmentedControl: UISegmentedControl!
- lazy var PaymentsMonthlyVC: PaymentsMonthlyVC = {
- let storyboard = UIStoryboard(name: "PaymentsInit", bundle: Bundle.main)
- var viewController = storyboard.instantiateViewController(withIdentifier: "PaymentsMonthlyVC") as! PaymentsMonthlyVC
- self.addViewControllerAsChildViewController(childViewController: viewController)
- return viewController
- }()
- lazy var PaymentsOnceVC: PaymentsOnceVC = {
- let storyboard = UIStoryboard(name: "PaymentsInit", bundle: Bundle.main)
- var viewController = storyboard.instantiateViewController(withIdentifier: "PaymentsOnceVC") as! PaymentsOnceVC
- self.addViewControllerAsChildViewController(childViewController: viewController)
- return viewController
- }()
- override func viewDidLoad() {
- super.viewDidLoad()
- setupView()
- }
- //MARK: - View Methods
- private func setupView() {
- setupSegmentedControl()
- updateView()
- }
- private func updateView() {
- PaymentsMonthlyVC.view.isHidden = !(segmentedControl.selectedSegmentIndex == 0)
- PaymentsOnceVC.view.isHidden = (segmentedControl.selectedSegmentIndex == 0)
- }
- // MARK: -
- private func setupSegmentedControl() {
- segmentedControl.removeAllSegments()
- segmentedControl.insertSegment(withTitle: "PaymentsMonthly", at: 0, animated: false)
- segmentedControl.insertSegment(withTitle: "PaymentsOnce", at: 1, animated: false)
- segmentedControl.addTarget(self, action: #selector(selectionDidChange(sender:)), for: .valueChanged)
- segmentedControl.selectedSegmentIndex = 0
- }
- // MARK: - Actions
- @ObjC func selectionDidChange(sender: UISegmentedControl) {
- updateView()
- }
- // MARK: - Helper Methods
- private func addViewControllerAsChildViewController(childViewController: UIViewController){
- addChildViewController(childViewController)
- view.addSubview(childViewController.view)
- childViewController.view.frame = view.bounds
- childViewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
- childViewController.didMove(toParentViewController: self)
- }
- private func removeViewControllerAsChildViewController(childViewController: UIViewController){
- childViewController.willMove(toParentViewController: nil)
- childViewController.view.removeFromSuperview()
- childViewController.removeFromParentViewController()
- }
- }
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Bertone105 ()