Is it possible to pass data between the UIViewController and the UIView? if yes, how?
For example when you press button1 the UIViewController says to the UIView that the person has pressed button1 and then the UIView draws a triangle. But if you then press button2 the UIViewController says to the UIView that he has now pressed button2 and then the UIView eliminates the triangle and draws a circle.
The buttons are build programmatically.
The question is how i can invoke the shapes which i have drawn with drawRect within the UIView in the UIViewController.
class ViewController: UIViewController {
@IBOutlet var UnitViewTabeller: UnitView!
var btn: UIButton!
override viewDidLoad {
self.btn = UIButton(frame: CGRectMake(0.04 * view.bounds.width, 0.91 * view.bounds.height, 0.44 * view.bounds.width, 0.07 * view.bounds.height)) //set frame
self.btn.layer.cornerRadius = 10
self.btn.setTitle("0", forState: .Normal) //set button title
self.btn.setTitleColor(UIColor.whiteColor(), forState: .Normal) //set button title color
self.btn.backgroundColor = UIColor(red: 0.2745, green: 0.2784, blue: 0.2706, alpha: 1.0) //set button background color
self.btn.tag = 0 // set button tag
self.btn.addTarget(self, action: "btnclicked:", forControlEvents: .TouchUpInside) //add button action
self.view.addSubview(btn) //add button in view
self.btnArray.append(btw)
}
func btnclicked(sender: UIButton) {
//draw the circle from the UIView
}
}
class UnitView: UIView {
override func drawRect(rect: CGRect) {
let cirkel = UIGraphicsGetCurrentContext()
let rectangle = CGRect(x: 0.2 * bounds.width, y: 0.15 * bounds.height, width: 0.6 * bounds.width, height: 0.6 * bounds.width)
CGContextSetLineWidth(cirkel, 4.0)
CGContextAddEllipseInRect(cirkel, rectangle)
CGContextStrokePath(cirkel)
}
}
UIViewController
has aview
property of typeUIView
.You can access from inside your UIViewController class using
self.view
Accessing it from inside your class:
Swift class doesn't like self.view.addSubview()