Matt
Matt

Reputation: 577

ios Container View change View

I have a containerView added to a View Controller. I am hoping to on swipe of the containerView change the view in the container. However when I use the following in my swipe action function it adds the view to the whole page not just changing the view inside the container.

 class SwipeDateViewController: UIViewController, UIGestureRecognizerDelegate {
    @IBOutlet weak var swipeContainer: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()

    }

    @IBAction func swipeLeftHandler(_ sender: UISwipeGestureRecognizer) {
        let viewController = self.storyboard!.instantiateViewController(withIdentifier: "swipeViewControllerStoryboard") as! SwipeViewController
        self.swipeContainer.addSubview(viewController.view)
    }
}

How do I just change the view in the container and not update the whole screen?

Upvotes: 1

Views: 493

Answers (1)

Phineas Huang
Phineas Huang

Reputation: 833

I think maybe you could add modify function in your custom vc. Then just run function of it.

For example:

var customVC:EmbeddedViewController?

func addView() {
    let storyboard = UIStoryboard.init(name: "Main", bundle: nil)
    let vc = storyboard.instantiateViewController(withIdentifier: "EmbeddedViewController") as! EmbeddedViewController
    self.addChild(vc)
    vc.view.bounds = CGRect.init(x: 20, y: 40, width: 50, height: 60)
    self.view.addSubview(vc.view)
    vc.didMove(toParent: self)
    customVC = vc
}


@IBAction func actionAddView(_ sender: Any) {
  customVC?.changeColor(color: UIColor.black)
}

EmbeddedViewController

class EmbeddedViewController: UIViewController {
  public func changeColor(color:UIColor) {
      self.view.backgroundColor = color
  }
}

Upvotes: 1

Related Questions