在View Controllers Swift

时间:2019-02-26 22:06:48

标签: swift xcode image uibutton

我已经在这个问题上停留了两个小时。

我正在尝试在第一个VC上有一个带有图像的按钮,单击该按钮时,将打开另一个具有相同图像放大的VC。这是我到目前为止所掌握的。

图像最初是如何存储的,它只是来自xcassets的4x3图像按钮:

 for case let hstack as UIStackView in stack.arrangedSubviews {
        for case let btn as UIButton in hstack.arrangedSubviews {
            let thisIMG = UIImage(named: randArray[k])
            k = k + 1


            btn.setImage(thisIMG, for: UIControl.State.normal)
            btn.imageView?.contentMode = .scaleAspectFill

        }
    }

这是我的prepare函数,其中测试颜色/文本只是为了确保我正确地执行了部分任务:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    let dest = segue.destination as? ImageViewController
    let button = sender as? UIButton

    dest?.imgFromFirst = button?.currentImage
    //dest?.testColor = .red
    //dest?.testText = "green eggs and ham"
 }

在第二个View Controller中,我具有以下内容:

var imgFromFirst: UIImage!
var testText = "this is not changing"
var testColor: UIColor!

@IBOutlet weak var enlargedImage: UIButton!

override func viewDidLoad() {
    super.viewDidLoad()
    //enlargedImage.setTitle(testText, for: .normal)
    //enlargedImage.backgroundColor = testColor

    enlargedImage.setImage(imgFromFirst, for: .normal)
    //enlargedImage.imageView?.contentMode = .scaleAspectFill
}

我可以更改按钮的颜色和按钮的文本,但到目前为止图像上还没有运气。我想我可能正在尝试访问不存在的内容?因此imgFromFirst没有得到任何通过,但是我不确定如何解决此问题。

谢谢!

2 个答案:

答案 0 :(得分:0)

dest?.imgFromFirst = button?.currentImage行,您可以替换为:

dest?.imgFromFirst = button?.image(for: .normal)

或这个dest?.imgFromFirst = button?.imageView?.image

答案 1 :(得分:0)

用户点击按钮时正在呼叫

xs:sequence。该按钮的当前状态为xs:element,因为此时用户在该按钮和按钮上的手指被突出显示。 要获取图像,我需要致电func prepare(for segue: UIStoryboardSegue, sender: Any?),因为您已将图像设置为按钮正常状态。