我正在构建星座应用程序,其中每个标志都是一个按钮。
当您点击带有您的星座的按钮时,弹出视图控制器将出现在您的星座图屏幕上。
我为一个星座/星座
构建了应用程序同样,每个图像和相应的标志标题都是一个按钮。
所以鱼符号和“双鱼座”这个词就是一个按钮。
我想添加到我的应用程序,您可以点击任何星座,它会为您提供相应的信息。
我首先在界面构建器中构建了我的应用程序,然后添加了代码,这可能是我所知道的差距来自的地方。
**问题:我想知道是否有办法捕获我设置的图像 制作每个按钮并将其显示在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中访问它,但这会导致我的程序崩溃。
如果有人有任何结构提示,我都是耳朵
答案 0 :(得分:0)
你有正确的想法,但你要做的是:
在" ShowCharacteristicsPopup"
在" ShowCharacteristicsPopup"中设置PopUpViewController按钮的UIImage。功能
尝试类似:
popOverVC.popUpButton.setImage(sender.currentImage!, for: .normal)
这行代码在"之前。 self.view.addSubview(popOverVC.view) "之一。
或者你可以移动这一行
var buttonImage: UIImage?
要隐藏PopUpViewController,然后在" ShowCharacteristicsPopup"设置popOverVC的buttonImage,然后你的代码应该改变" vc。"自我。"