I basically followed the tutorial from FlexLayout on making a series of remote Views.
That part went extremely well… But I’d like to make the clicking on each of the individual views push a different ViewController. I’m using tap gestures to make each of the views clickable… but neither love nor money will get them to actually take me to a ViewController.
If I try to present them I get:
Warning: Attempt to present on whose view is not in the window hierarchy
And if I try to push them I get some sort of nil error:
A multiplier of 0 or a nil second item together with a location for the first attribute creates an illegal constraint of a location equal to a constant. Location attributes must be specified in pairs.
Here’s the code:
SocialView
import FlexLayout
protocol SocialViewDelegate {
func didTapButton()
}
class SocialView: UIView {
var delegate: SocialViewDelegate?
@IBOutlet weak var view1: UIView!
@IBOutlet weak var view2: UIView!
fileprivate let rootFlexContainer = UIView()
init() {
super.init(frame: .zero)
backgroundColor = .white
let view1 = UIView()
let view2 = UIView()
let text1 = UILabel()
text1.text = "Photos"
view1.backgroundColor = .white
view1.addSubview(text1)
let tap = UITapGestureRecognizer(target: self, action: #selector(goEvt))
//tap.delegate = self
view1.addGestureRecognizer(tap)
@objc func goEvt() {
//let vc2 = UsersViewController()
//vc2.modalPresentationStyle = .fullScreen
//let vc93 = SocialViewController(coder: aDecoder)
let vip = SocialViewController()
let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyBoard.instantiateViewController(withIdentifier: "evview") as! EventsViewController
// vip.present(vc, animated: true)
vip.didTapButton()
}
// self.collectionView.addSubview(vc)
}
@objc func buttonTapAction() {
delegate?.didTapButton()
}
SocialViewController
class SocialViewController: UIViewController, SocialViewDelegate {
func didTapButton() {
let topdawg = EventsViewController()
let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyBoard.instantiateViewController(withIdentifier: "evview") as! EventsViewController
self.present(topdawg, animated: true)
// navigationController?.pushViewController(topdawg, animated: true)
}
fileprivate var mainView: SocialView {
return self.view as! SocialView
}
For this part:
let tap = UITapGestureRecognizer(target: self, action: #selector(goEvt))
You could put “goEvt” or “didTapButton”… One would keep you on SocialView, the other would take you to SocialViewController. Doesn’t matter. You can also see that I’ve commented out a few things I’ve tried… It all leads to either the first or second error I posted above.
I can’t make it to “EventsViewController” (or any other) no matter what I do.
So any help would be appreciated.