user8105388
user8105388

Reputation:

sequence events in a button

Right below I have 2 buttons. place button needs to be pressed before magicjohnson button or there will be a runtime error.

    @IBAction func magicJohnson(_ sender: Any) {
        let photo = self.imageV.image
        let data = UIImagePNGRepresentation(photo!)
        if cdHandler.saveObject(pic:  data!){
        }}

    @IBAction func place(_ sender: Any) {
        let image = UIImage.imageWithView(view: theView)
        let heart:UIImage = UIImage(named: "words")!
        let left:UIImage = image
        let newSize2 = CGSize(width: left.size.width, height: left.size.height)
        UIGraphicsBeginImageContextWithOptions(newSize2, false, left.scale)
        left.draw(in: CGRect(x: 0,y: 0,width: newSize2.width,height:   newSize2.height), blendMode:CGBlendMode.normal, alpha:1.0)
        heart.draw(in: CGRect(x: 0,y: 0,width: newSize2.width,height:   newSize2.height), blendMode:CGBlendMode.normal, alpha:1.0)
        let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
        UIGraphicsEndImageContext()
        imageV.image = newImage
    }

How can I get the code to essentially do this/

 @IBAction func magicJohnson(_ sender: Any) {
     FIRST {
   let image = UIImage.imageWithView(view: theView)
        let heart:UIImage = UIImage(named: "words")!
        let left:UIImage = image
        let newSize2 = CGSize(width: left.size.width, height: left.size.height)
        UIGraphicsBeginImageContextWithOptions(newSize2, false, left.scale)
        left.draw(in: CGRect(x: 0,y: 0,width: newSize2.width,height:   newSize2.height), blendMode:CGBlendMode.normal, alpha:1.0)
        heart.draw(in: CGRect(x: 0,y: 0,width: newSize2.width,height:   newSize2.height), blendMode:CGBlendMode.normal, alpha:1.0)
        let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
        UIGraphicsEndImageContext()
        imageV.image = newImage
            }
second{
        let photo = self.imageV.image
        let data = UIImagePNGRepresentation(photo!)
        if cdHandler.saveObject(pic:  data!){
        }
        }}

Upvotes: 0

Views: 43

Answers (1)

Shehata Gamal
Shehata Gamal

Reputation: 100503

Try this , declare placeBu as IBOutlet

@IBAction func magicJohnson(_ sender: Any) {
    self.place(self.placeBu) // may be self.place(UIButton()) if you don't care of sender instead of the outlet
    let photo = self.imageV.image
    let data = UIImagePNGRepresentation(photo!)
    if cdHandler.saveObject(pic:  data!){
    }}

Or

@IBAction func magicJohnson(_ sender: Any) {

    if let photo = self.imageV.image
    { 
        let data = UIImagePNGRepresentation(photo!)
           if cdHandler.saveObject(pic:  data!){
        }}

    }
  }

OR in Interface builder set enabled for magicJohnson button to false

@IBAction func place(_ sender: Any) {
    let image = UIImage.imageWithView(view: theView)
    let heart:UIImage = UIImage(named: "words")!
    let left:UIImage = image
    let newSize2 = CGSize(width: left.size.width, height: left.size.height)
    UIGraphicsBeginImageContextWithOptions(newSize2, false, left.scale)
    left.draw(in: CGRect(x: 0,y: 0,width: newSize2.width,height:   newSize2.height), blendMode:CGBlendMode.normal, alpha:1.0)
    heart.draw(in: CGRect(x: 0,y: 0,width: newSize2.width,height:   newSize2.height), blendMode:CGBlendMode.normal, alpha:1.0)
    let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
    UIGraphicsEndImageContext()
    imageV.image = newImage
    self.magicJohnson.isEnabled = true
}

Upvotes: 1

Related Questions