按下按钮,同一页面上会出现相同的按钮

时间:2017-09-04 02:56:49

标签: ios swift xcode interface-builder

我正在构建星座应用程序,其中每个标志都是一个按钮。

当您点击带有您的星座的按钮时,弹出视图控制器将出现在您的星座图屏幕上。

我为一个星座/星座

构建了应用程序

enter image description here

同样,每个图像和相应的标志标题都是一个按钮。

所以鱼符号和“双鱼座”这个词就是一个按钮。

我想添加到我的应用程序,您可以点击任何星座,它会为您提供相应的信息。

我首先在界面构建器中构建了我的应用程序,然后添加了代码,这可能是我所知道的差距来自的地方。

**问题:我想知道是否有办法捕获我设置的图像enter image description here 制作每个按钮并将其显示在PopUp屏幕上,而不是每次都显示双鱼座的图像。

这是我的视图控制器类,其中包含主要三页的代码

//  ViewController.swift
//  Zodiac
import UIKit
class ViewController: UIViewController {

var buttonImage: UIImage?

override func viewDidLoad() {
    super.viewDidLoad()
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

@IBAction func ShowCharacteristicsPopup(_ sender: UIButton) {
    let popOverVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "PopChar") as! PopUpViewController
    self.addChildViewController(popOverVC)
    popOverVC.view.frame = self.view.frame
    self.view.addSubview(popOverVC.view)
    popOverVC.didMove(toParentViewController: self)
    //let buttonTitle = sender.title(for: .normal)!
    //print(buttonTitle)
    //buttonImage = sender.currentImage!
    //print(buttonImage)
}

@IBAction func ShowDailyPopup(_ sender: UIButton) {
    let popOverVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "PopDay") as! PopUpViewController
    self.addChildViewController(popOverVC)
    popOverVC.view.frame = self.view.frame
    self.view.addSubview(popOverVC.view)
    popOverVC.didMove(toParentViewController: self)
}

@IBAction func ShowYearlyPopup(_ sender: UIButton) {
    let popOverVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "PopYear") as! PopUpViewController
    self.addChildViewController(popOverVC)
    popOverVC.view.frame = self.view.frame
    self.view.addSubview(popOverVC.view)
    popOverVC.didMove(toParentViewController: self)
}

}

这是我的弹出式视图控制器类,其中包含弹出视图控制器的代码(如果查看界面构建器映射,则为第三行屏幕)

//  PopUpViewController.swift
//  Zodiac
import UIKit
class PopUpViewController: UIViewController {
//@IBOutlet weak var vc: ViewController!
@IBOutlet weak var popUpButton: UIButton!


override func viewDidLoad() {
    super.viewDidLoad()
    self.showAnimate()
    //print(vc.buttonImage)
    //popUpButton.setImage(vc.buttonImage, for: .normal)
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

@IBAction func ClosePopUp(_ sender: UIButton) {
    removeAnimate()
}

func showAnimate() {
    self.view.transform = CGAffineTransform(scaleX: 1.3,y: 1.3)
    self.view.alpha = 0.0
    UIView.animate(withDuration: 0.25, animations: {
        self.view.alpha = 1.0
        self.view.transform = CGAffineTransform(scaleX: 1.0,y: 1.0)
    });
}

func removeAnimate() {
    UIView.animate(withDuration: 0.25, animations: {
        self.view.transform = CGAffineTransform(scaleX: 1.3,y: 1.3)
        self.view.alpha = 0.0
    }, completion: {(finished : Bool) in
        if (finished) {
            self.view.removeFromSuperview()
        }
    });
}

}

在ViewController的ShowCharacteristicsPopup函数中,我试图获取sender.currentImage,然后在popupviewcontroller中访问它,但这会导致我的程序崩溃。

如果有人有任何结构提示,我都是耳朵

1 个答案:

答案 0 :(得分:0)

你有正确的想法,但你要做的是:

  1. 在" ShowCharacteristicsPopup"

  2. 中获取UIImage
  3. 在" ShowCharacteristicsPopup"中设置PopUpViewController按钮的UIImage。功能

  4. 尝试类似:

    popOverVC.popUpButton.setImage(sender.currentImage!, for: .normal)
    

    这行代码在"之前。 self.view.addSubview(popOverVC.view) "之一。

    或者你可以移动这一行

    var buttonImage: UIImage?
    

    要隐藏PopUpViewController,然后在" ShowCharacteristicsPopup"设置popOverVC的buttonImage,然后你的代码应该改变" vc。"自我。"