#swift #xcode #viewcontroller
#быстрый #xcode #контроллер просмотра
Вопрос:
Вот мой контроллер всплывающего окна:
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) } }
Моя функция bigVC.resetImages() должна измениться на изображения 7 кнопок в массиве UIButtons. Функция работает идеально, но массивы возвращают ноль, и приложение выходит из строя, когда функция вызывается из другого контроллера представления. Как правильно создать экземпляр контроллера вида, чтобы я вызывал эти кнопки?
Это контроллер всплывающего окна для карточной игры. В нем есть кнопка, которая при нажатии должна удалить карту из руки игрока и закрыть всплывающее окно, чтобы вернуться к контроллеру просмотра игры. Как сделать чан
Ответ №1:
Вам нужно установить
self.bigVC = firstViewController
затем нужно дождаться загрузки GameViewController (вызывается viewDidLoad), прежде чем вызывать повторные настройки. Так что этот массив не вернет ноль.
Комментарии:
1. где мне это сделать? В моем контроллере всплывающего вида viewDidLoad? Должен ли я вызывать bigVC.viewDidLoad() внутри своей функции перед вызовом reset? Не уверен, как реализовать это решение…
Ответ №2:
попробуйте это
@IBAction func removePressed(_ sender: UIButton) { let firstViewController = storyboard?.instantiateViewController(withIdentifier: "GameScreen") as! GameViewController firstViewController.removingCard(indexToRemove: index!) firstViewController.resetImages() dismiss(animated: true, completion: nil) }
Комментарии:
1. Это также приводит к тому же сбою и отображает те же ошибки