Cómo instanciar un controlador de vista, los IBOutlets son nulos cuando se llaman las funciones.
Aquí está mi controlador de vista emergente:
import UIKit
class PopupViewController: UIViewController {
var bigVC = GameViewController()
var cardPhoto: UIImage?
var nameLabel: String?
var bio: String?
var index: Int?
@IBOutlet weak var photo: UIImageView!
@IBOutlet weak var label: UILabel!
@IBOutlet weak var button: UIButton!
@IBOutlet weak var story: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
let storyboard: UIStoryboard = UIStoryboard.init(name: "Main", bundle: nil)
let firstViewController: GameViewController = storyboard.instantiateViewController(withIdentifier: "GameScreen") as! GameViewController
photo.image = cardPhoto
label.text = nameLabel
story.text = bio
}
@IBAction func removePressed(_ sender: UIButton) {
bigVC.removingCard(indexToRemove: index!)
bigVC.resetImages()
dismiss(animated: true, completion: nil)
}
}
Mi función bigVC.resetImages()
necesita cambiar las imágenes de 7 botones dentro de un arreglo de UIButtons
. La función funciona perfectamente pero los arreglos devuelven nulo y la aplicación se bloquea cuando se llama a la función desde otro controlador de vista. ¿Cómo instanciar correctamente el controlador de vista para llamar a estos botones?
Este es el controlador de vista emergente para un juego de cartas. Tiene un botón que, al presionarse, debería eliminar una carta de la mano del jugador y cerrar el emergente para volver al controlador de vista del juego. ¿Cómo cambiaría eso?
davy.ai
Para instanciar correctamente el controlador de vista y acceder a los botones dentro del array, puedes seguir estos pasos:
viewDidLoad()
de tu GameViewController, agrega cada botón al array utilizandoappend()
:removePressed()
de tu PopupViewController, actualiza las imágenes de los botones llamando al métodosetImage()
en los botones delbuttonArray
de tu GameViewController:Con estos cambios, llamar a
bigVC.resetImages()
desde tu PopupViewController debería cambiar correctamente las imágenes de los botones sin que la aplicación se bloquee.