Post

Replies

Boosts

Views

Activity

Reply to presenting view controllers; errors involved
class PresentedBaseClass : UIView{ override init(frame: CGRect){ super.init(frame: frame) setupSubviews() } func setupSubviews(){ self.translatesAutoresizingMaskIntoConstraints = false // This is the problematic line // ... some code to create subviews setupConstraints() } func setupConstraints(){ NSLayoutConstraint.activate([ // Adding the two lines of code below will correct the problem, although // it is probably better to remove the problematic line //self.widthAnchor.constraint(equalToConstant: UIScreen.main.bounds.width) //self.heightAnchor.constraint(equalToConstant: UIScreen.main.bounds.height) // ... constraints on subviews ]) } } class PresentedSubClass1 : PresentedBaseClass{ // ... } class PresentedSubClass2 : PresentedBaseClass{ // ... } class PresentingClass : UIView{ var windowFrame: CGRect init(windowframe: CGRect){ windowFrame = windowframe super.init(nibName: nil, bundle: nil) } @objc func originalPresentation(_ sender: UIButton){ childVC = PresentedSubClass1Controller(windowframe: windowFrame) present(childVC!, animated: false, completion: nil) // The two lines below are the original workaround //let appDelegate = UIApplication.shared.delegate //appDelegate?.window??.rootViewController = childVC } @objc func gotoSubClass1(){ childVC?.dismiss(animated: false, completion: nil) childVC = PresentedSubClass1Controller(windowframe: windowFrame) present(childVC!, animated: false, completion: nil) //let appDelegate = UIApplication.shared.delegate //appDelegate?.window??.rootViewController = childVC } @objc func gotoSubClass2(){ childVC?.dismiss(animated: false, completion: nil) childVC = PresentedSubClass2Controller(windowframe: windowFrame) present(childVC!, animated: false, completion: nil) //let appDelegate = UIApplication.shared.delegate //appDelegate?.window??.rootViewController = childVC } } class AppDelegate: UIResponder, UIApplicationDelegate{ var window: UIWindow? var PresentingController: PresentingController! func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. window = UIWindow(frame: UIScreen.main.bounds) PresentingController = PresentingController(windowframe: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)) window?.rootViewController = PresentingController window?.makeKeyAndVisible() return true } }Apparently, the problem was that the presented view was not properly constrained; its subviews were, but it wasn't. See code above.
Jan ’20